我正在尝试制作模态对话框窗口,让用户知道一些错误消息,或者让用户编辑一些值。 我正在使用MVVM模式,所以我的主窗口有一些控制部分和工作区部分。在工作区部分,我打开viewmodels紧跟datatemplate到视图(定义为usercontrols)。从其中一个视图我想打开模态对话框窗口。我正在按照这个答案Error window show modal in MVVM WPF。如该答案所述,我在InvoiceViewModel中实现了DialogClass。但我显示模态窗口的内容有问题。如果我将窗口的内容设置为ViewModel类,则输出是具有该ViewModel的命名空间路径的简单文本。 (使用datatemplate附加到View的ViewModel。)如果我将内容设置为View - 它正在工作 - 视图显示但是,我正在消除MVVM模式(从ViewModel打开View,因为ViewModel没有对View的引用)。
ErrorViewModel newErrorViewModel = new ErrorViewModel();
ErrorView newErrorView = new ErrorView();
DialogWindow dialogWindow = new DialogWindow();
//Not Working
//dialogWindow.Content = newErrorViewModel;
//Working But, breaking MVVM
dialogWindow.Content = newErrorView;
dialogWindow.ShowDialog();
在ErrorView.xaml中,我已经附加了ErrorViewModel。
<DataTemplate DataType="{x:Type vm:ErrorViewModel}">
<vw:ErrorView/>
</DataTemplate>
我做错了什么?
感谢。
答案 0 :(得分:0)
您正在将newErrorView分配给对话框的内容,而不是newErrorViewModel
答案 1 :(得分:0)
知道了。
我已经在ErrorView.xaml中放置了用于连接模型和视图的代码。这当然是我的错。我已将这些行替换为app.xaml资源,它正在使lika成为一种魅力。
答案 2 :(得分:0)
也许您有兴趣看到在此方案中使用托管扩展性框架(MEF)的替代实现。请查看 WPF Application Framework (WAF) 的 ViewModel 示例应用程序。