【发布时间】:2010-11-30 16:49:20
【问题描述】:
使用 MVVM 和 WPF 处理打开和关闭新窗口和对话框的好/直接的方法是什么?打开和关闭应该由 ViewModel 驱动吧?但是 ViewModel 不应该知道视图...
【问题讨论】:
-
我在this post回答了一个非常相似的问题。
使用 MVVM 和 WPF 处理打开和关闭新窗口和对话框的好/直接的方法是什么?打开和关闭应该由 ViewModel 驱动吧?但是 ViewModel 不应该知道视图...
【问题讨论】:
我通常为此使用接口。
例如,如果我想在单独的窗口中编辑记录,我有一个接口 IEditingProvider
class MyRecordEditingProvider: IEditingProvider<MyRecordViewModel>
{
// Implementation of generic interface method
public void Edit(MyRecordViewModel model) {
EditWindow edit = new EditWindow();
edit.DataContext = model;
edit.ShowDialog();
}
}
【讨论】:
Owner 属性?如果没有设置所有者(例如,主窗口),模式对话框可能会出现在主窗口后面,这从用户的角度来看是非常奇怪和令人困惑的。
Window 实例传递到我的 ViewModel 中并移动它们只是为了让所有者最终进入我创建对话框的 Dialog 服务。你的是一个更简单的解决方案。非常感谢您的提示!