如何使用MVVM处理打开和关闭新Windows?

bit*_*onk 9 wpf dialog window mvvm

使用MVVM和WPF,处理打开和关闭新窗口和对话框的好方法是什么?打开和关闭应该由ViewModel驱动吗?但ViewModel不应该知道视图......

Bot*_*000 6

我通常使用接口.例如,如果我想在单独的窗口中编辑记录,我有一个接口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();
    }
}
Run Code Online (Sandbox Code Playgroud)