我有一个主窗口(主视图)。如果用户单击“显示”按钮,则应显示“演示”窗口(模态对话框)。使用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
}
}
- 如果我们需要更改“显示”按钮的状态(启用/禁用),我们需要添加逻辑来管理按钮状态。
- 源代码与“旧式”WinForms和MFC源代码非常相似 - 我不确定这是好还是坏,请建议。
- 还有其他遗漏的东西吗?
另一种方法:
在MainWindowViewModel中,我们将实现“ShowCommand”属性,该属性将返回命令的ICommand接口。而命令本身:
- 将引发“ShowDialogEvent”;
- 将管理按钮状态。
这种方法更适合MVVM,但需要额外的编码:ViewModel类无法“显示对话框”,因此MainWindowViewModel仅会引发“ShowDialogEvent”。MainWindowView需要在其MainWindow_Loaded方法中添加事件处理程序,例如:
((MainWindowViewModel)DataContext).ShowDialogEvent += ShowDialog;
(ShowDialog - 类似于 'ModifyButton_Click' 方法。)
所以我的问题是: 1. 你有没有看到其他的方法? 2. 你认为列出的其中一种好还是坏?(为什么?)
欢迎分享任何其他想法。
谢谢。