wpf - 具有MVVM模式的模态窗口

标签 wpf mvvm dialog modal-dialog

我试图使模式对话框窗口,让用户知道一些错误消息,或让用户编辑一些值。
我正在使用MVVM模式,因此我的主窗口包含一些控制部分和工作区部分。在工作空间部分中,我将使用datatemplate紧密打开 View 模型(定义为用户控件)。从这些 View 之一,我想打开模式对话框窗口。我正在关注这个答案Error window show modal in MVVM WPF。如该答案所述,我已经在InvoiceViewModel中实现了DialogClass。但是我对显示模态窗口的内容有疑问。如果将窗口的内容设置为ViewModel类,则输出是带有该ViewModel命名空间路径的简单文本。 (将ViewModel附加到带有datatemplate的View上。)如果我将内容设置为View-它正在工作-显示了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>

我究竟做错了什么?

谢谢。

最佳答案

您正在将newErrorView分配给对话框的内容,而不是newErrorViewModel

关于wpf - 具有MVVM模式的模态窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4491129/

相关文章:

wpf - WPF MVVM 应用程序中的键盘事件?

php - 如何在 Jquery 对话框中打开表单操作

javafx - 如何设置 JavaFX 对话框标签宽度

android - 对话框按钮中的 OnClickListener 被调用两次,处理时间长

c# - WPF MVVM 控件在其绑定(bind)的 VM 属性更改时不会更新

c# - 为什么 WPF 中任何元素的 TabIndex 属性都是 2147483647?

c# - 无法访问 ControlTemplate 中 TextBlock 的 Text 属性

c# - 模拟 Windows 8 开始菜单磁贴布局引擎

wpf - MvvmCross:在另一个 View 中查看(或等效于CaliburnMicro Conductor)

ios - RxSwift - 按下按钮时显示/隐藏警告标签