c# - 连接窗口与 ViewModel

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

出现以下错误

Can't put a window in a Style

我找到了 this回答。

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

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

最佳答案

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

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

您尝试采用的方法不适用于 Windows,只有当您将 ViewModel 本身放入 XAML 时才有用。

关于c# - 连接窗口与 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14744044/

相关文章:

c# - RadioButtonList 值的空引用异常

c# - Entity Framework 中与表名连接的垃圾值

c# - 不同ViewModel的访问属性

android - 如何使用观察者使用 ViewPager 中当前项目位置的值来验证 EditText 中的值?

c# - 您可以将不同的 View 模型发送到 View 吗?

c# - 如何使用 UNION 对字符/字符串数组进行分组?

C# Asp.net Membership.GetAllUsers 通过电子邮件订购

c# - DatePicker 日历太宽 WPF

c# - 如何获取 WPF DataGrid 单元格的位置?

asp.net-mvc-3 - ASP.Net MVC 3 复选框列表编辑器