使用ViewModel连接窗口

时间:2013-02-07 05:14:06

标签: c# wpf viewmodel

我有以下代码

<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>

它正在发出以下错误

  

无法在样式中放置窗口

我找到了this回答。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

您尝试采用的方法对Windows不起作用,仅在将ViewModel自身放入XAML时才有用。

答案 1 :(得分:0)

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

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

viewModel是命名空间。

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

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