![](/img/trans.png)
[英]How to implement simple tree data structure in WPF using MVVM architecture?
[英]How to implement dialog architecture in MVVM
我正在开发基于PRISM框架(Unity Container)的WPF 4.0-MVVM应用程序。
我想知道在mvvm模式中实现对话框的最佳方法是什么。 我打算在我的应用程序中使用很多,所以我想要一些可重用的东西。
这篇关于MVVM对话的文章你可能会觉得很有用: http : //www.codeproject.com/Articles/36745/Showing-Dialogs-When-Using-the-MVVM-Pattern
我让ViewModel在需要获取用户信息时引发事件。 然后由View查看如何提供它。 这确实意味着文件背后的代码将获得事件处理程序,真正的MVVM专家将会不寒而栗......
由于您使用的是Prism / Unity,因此请为View Models实现中介模式。
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; } }
如果在View中使用ViewModel事件和处理程序,请使用WeakEventHandler模式来消除潜在的资源泄漏。 此外,可以将多个视图附加到同一ViewModel。 我使用一个ViewModel工作项目 - >一个View。 而且还有一个ViewModel - >多个视图。 在做出设计决策时需要考虑的事项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.