簡體   English   中英

如何在MVVM中實現對話框架構

[英]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實現中介模式。

  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; } } 

如果在View中使用ViewModel事件和處理程序,請使用WeakEventHandler模​​式來消除潛在的資源泄漏。 此外,可以將多個視圖附加到同一ViewModel。 我使用一個ViewModel工作項目 - >一個View。 而且還有一個ViewModel - >多個視圖。 在做出設計決策時需要考慮的事項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM