使用MVVM和WPF,处理打开和关闭新窗口和对话框的好方法是什么? 打开和关闭应由ViewModel驱动,但ViewModel不应该知道视图...
我通常使用接口来实现这个功能。例如,如果我想在一个单独的窗口中编辑记录,我会有一个名为IEditingProvider<TViewModel>的接口,我可以在其他地方实现它,然后将一个接口引用传递给我的ViewModel的构造函数。EditingProvider可能只是做这样的事情:
class MyRecordEditingProvider: IEditingProvider<MyRecordViewModel>
{
// Implementation of generic interface method
public void Edit(MyRecordViewModel model) {
EditWindow edit = new EditWindow();
edit.DataContext = model;
edit.ShowDialog();
}
}
Window
实例传递到我的 ViewModel 中并移动它们,只是为了最终将其传递给我的 Dialog 服务,在那里创建对话框。你的解决方案更简单。非常感谢你的提示! - Slauma