3

我有以下代码

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="UI/ResourceDirectory.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <DataTemplate DataType="{x:Type vm:MainWindowViewModel}">
            <local:MainWindow></local:MainWindow>
        </DataTemplate>
    </ResourceDictionary>

</Window.Resources>

它给出了以下错误

不能在样式中放置窗口

我找到了这个答案。

我已经在主窗口中完成了所有必需的 UI 编码,但无法将其与相应的 ViewModel 连接(将其放在另一个项目中,我正在使用它的参考)。

所以我的问题是,“为什么我不能这样做?”,“如何将 Window 控件与 ViewModel 连接?”,“我应该使用 UserControl 来代替吗?”

4

2 回答 2

0

您试图将一个窗口放在另一个窗口中,这是不可能的。连接 View 和 ViewModel 要简单得多,但取决于您的项目结构。您可以在Window构造函数中设置它,例如:

public partial class MainWindow : Window    
{
    public MainWindow ()
    {
        this.DataContext = new MainWindowViewModel();
        InitializeComponent();
    }
}

您尝试采用的方法不起作用,Windows并且仅当您将 ViewModel 本身放入 XAML 时才有用。

于 2013-02-07T06:46:45.553 回答
0

要将视图模型连接到视图,您必须在 xaml 代码中执行以下操作。

<Window.DataContext>
   <viewModel:MainWindowViewModel/>
</Window.DataContext>

viewModel 是命名空间。

xmlns:viewModel="clr-namespace:TestProject.ViewModel"

您不应该在视图的代码隐藏中设置视图模型!

于 2013-02-07T06:52:26.790 回答