如何实现MVVM对话建筑(How to implement dialog architecture

2019-08-16 21:36发布

基于PRISM框架(统一容器)MVVM应用 - 我开发一个WPF 4.0。

我想知道什么是实现MVVM模式对话框的最佳方式。 我打算用相当多的在我的应用程序,所以我想要的东西可重用。

Answer 1:

由于您使用的棱镜/统一实施您的视图模型的调解模式。

  1. 一个DialogService(IDialogService)模块添加到项目中。
  2. 包含对话模块注册它们与IDialogService。 不要忘了申报DialogServiceModule作为ModuleDependency。
  3. 现在的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模​​式,以消除潜在的资源泄漏。 此外,它是可能的多个视图连接到同一个视图模型。 我在项目上曾经有一个视图模型 - >一个视图。 而且一个视图模型 - >多个视图。 只是要做出设计决策时需要考虑的。



Answer 2:

这篇文章的对话与MVVM可能对您有用: http://www.codeproject.com/Articles/36745/Showing-Dialogs-When-Using-the-MVVM-Pattern



Answer 3:

我让视图模型引发事件时,它需要获取用户信息。 它是那么达观如何提供它。 这意味着这个代码隐藏文件将获得的事件处理程序,有件事真正的行家MVVM会不寒而栗......



文章来源: How to implement dialog architecture in MVVM
标签: c# wpf mvvm