MVVM和WPF什么是处理打开和关闭新窗口和对话框的好方法?开启和关闭应该由ViewModel驱动?但ViewModel不应该知道视图...如何处理使用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
- 1. 打开和关闭窗口
- 2. 开幕WPF窗口MVVM和关闭它
- 3. 如何关闭当前窗口并同时打开新窗口?
- 4. 如何在WPF/MVVM右上角的关闭图标时处理关闭窗口?
- 5. 关闭窗口当新的打开?
- 6. 打开新窗口并关闭父项
- 7. QWebview - 重新打开关闭的窗口
- 8. 处理JFileChooser窗口关闭?
- 9. 如何在窗体上打开新窗口关闭?
- 10. 打开和关闭JavaScript窗口
- 11. WPF:打开和关闭窗口
- 12. 如何使用MVVM Light Toolkit打开一个新窗口
- 13. 如何用Windows API重新打开一个关闭的窗口
- 14. 在Java中处理和关闭窗口
- 15. 关闭窗口MVVM风格
- 16. 关闭XMLHttpRequest处理程序中的现有打开的窗口
- 17. 如何制作一个通用的wpf mvvm窗口打开/关闭事件处理程序?
- 18. 如何用Javascript/FB.ui打开和关闭弹出窗口
- 19. Python:关闭子窗口可防止新子窗口打开
- 20. 关闭实际窗口并从ViewModel打开一个新窗口
- 21. 钛关闭窗口并打开新窗口
- 22. 提交按钮打开新窗口并关闭父窗口?
- 23. 关闭窗口并打开一个新的窗口
- 24. 打开一个新窗口并在5秒后关闭窗口
- 25. html javascript打开新窗口,并关闭当前窗口
- 26. 打开新窗口并关闭旧窗口在Chrome中
- 27. MVVM Light WPF打开新窗口
- 28. wpf MVVM中处理窗口关闭按钮
- 29. 如何打开弹出窗口并关闭弹出窗口?
- 30. 如何创建关闭主窗口时打开的窗口?
我已经在[这篇文章](http://stackoverflow.com/a/15512972/385995)中回答了一个非常类似的问题。 – 2013-03-20 00:32:26