基于PRISM框架(统一容器)MVVM应用 - 我开发一个WPF 4.0。
我想知道什么是实现MVVM模式对话框的最佳方式。 我打算用相当多的在我的应用程序,所以我想要的东西可重用。
基于PRISM框架(统一容器)MVVM应用 - 我开发一个WPF 4.0。
我想知道什么是实现MVVM模式对话框的最佳方式。 我打算用相当多的在我的应用程序,所以我想要的东西可重用。
由于您使用的棱镜/统一实施您的视图模型的调解模式。
现在的ViewModels使用IDialogService显示所需的对话框。
public interface IDialogService { void RegisterDialog (string dialogID, Type type); bool? ShowDialog (string dialogID); } public class DialogService : IDialogService { private IUnityContainer m_unityContainer; private DialogServiceRegistry m_dialogServiceRegistry; public DialogService(IUnityContainer unityContainer) { m_unityContainer = unityContainer; m_dialogServiceRegistry = new DialogServiceRegistry(); } public void RegisterDialog(string dialogID, Type type) { m_dialogServiceRegistry.RegisterDialog(dialogID, type); } public bool? ShowDialog(string dialogID) { Type type = m_dialogServiceRegistry[dialogID]; Window window = m_unityContainer.Resolve(type) as Window; bool? dialogResult = window.ShowDialog(); return dialogResult; } }
如果您使用的ViewModel事件和处理程序的视图中,使用WeakEventHandler模式,以消除潜在的资源泄漏。 此外,它是可能的多个视图连接到同一个视图模型。 我在项目上曾经有一个视图模型 - >一个视图。 而且一个视图模型 - >多个视图。 只是要做出设计决策时需要考虑的。
这篇文章的对话与MVVM可能对您有用: http://www.codeproject.com/Articles/36745/Showing-Dialogs-When-Using-the-MVVM-Pattern
我让视图模型引发事件时,它需要获取用户信息。 它是那么达观如何提供它。 这意味着这个代码隐藏文件将获得的事件处理程序,有件事真正的行家MVVM会不寒而栗......