相关疑难解决方法(0)

使用MVVM在WPF中创建新窗口的最佳方法

在邻居帖子中:ViewModel应如何关闭表单? 我发布了如何使用MVVM关闭Windows的愿景.现在我有一个问题:如何打开它们.

我有一个主窗口(主视图).如果用户单击"显示"按钮,则应显示"演示"窗口(模态对话框).使用MVVM模式创建和打开窗口的首选方法是什么?我看到两种一般方法:

第一个(可能是最简单的).事件处理程序"ShowButton_Click"应该在主窗口的代码中实现,方式如下:

        private void ModifyButton_Click(object sender, RoutedEventArgs e)
        {
            ShowWindow wnd = new ShowWindow(anyKindOfData);
            bool? res = wnd.ShowDialog();
            if (res != null && res.Value)
            {
                //  ... store changes if neecssary
            }
        }
Run Code Online (Sandbox Code Playgroud)
  1. 如果我们"显示"按钮状态应该被更改(启用/禁用),我们将需要添加将管理按钮状态的逻辑;
  2. 源代码非常类似于"旧式"WinForms和MFC源 - 我不确定这是好还是坏,请指教.
  3. 还有其他我错过的东西?

另一种方法:

在MainWindowViewModel中,我们将实现"ShowCommand"属性,该属性将返回命令的ICommand接口.Comman反过来:

  • 将举起"ShowDialogEvent";
  • 将管理按钮状态.

这种方法将更适合MVVM,但需要额外的编码:ViewModel类不能"显示对话框",因此MainWindowViewModel只会引发"ShowDialogEvent",MainWindowView我们需要在其MainWindow_Loaded方法中添加事件处理程序,这样的事情:

((MainWindowViewModel)DataContext).ShowDialogEvent += ShowDialog;
Run Code Online (Sandbox Code Playgroud)

(ShowDialog - 类似于'ModifyButton_Click'方法.)

所以我的问题是:1.你看到其他任何方法吗?你认为其中一个是好还是坏?(为什么?)

欢迎任何其他想法.

谢谢.

.net c# wpf mvvm

55
推荐指数
3
解决办法
5万
查看次数

标签 统计

.net ×1

c# ×1

mvvm ×1

wpf ×1