如何处理使用MVVM打开和关闭新窗口?
我通常使用这个接口。例如,如果我想在单独的窗口中编辑记录,我有一个接口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();
}
}
如何维护可用于应用程序(的某个部分)的EditingProviders,以及如何检索最终将传递给ViewModel的构造函数的正确实例?我想这不是所有的硬连线,但解耦? – bitbonk 2009-09-23 11:09:41
是的,它是分离的。实际上,我正在使用依赖注入框架(Microsoft的复合应用程序块)将通用接口映射到实现。我目前正在代码中执行此操作,但Unity容器也可以使用配置文件进行配置。 – Botz3000 2009-09-23 19:48:41
在调用ShowDialog之前,您是否有MVVM友好的解决方案来设置EditWindow的'Owner'属性?如果没有设置所有者(例如,到MainWindow),则模式对话框可以位于主窗口的后面,这从用户角度来看是非常奇怪和令人困惑的。 – Slauma 2011-03-01 18:52:32
我已经在[这篇文章](http://stackoverflow.com/a/15512972/385995)中回答了一个非常类似的问题。 – 2013-03-20 00:32:26