簡體   English   中英

WPF帶有MVVM的多個窗口

[英]WPF Multiple windows with MVVM

使用MVVM處理多個窗口時,最常見的\\最佳實踐是什么? 我有一個帶有按鈕的窗口,單擊該按鈕時,我想打開第二個窗口並關閉第一個窗口。 我該如何使用MVVM? 每個窗口都應該有一個MainViewModel實例嗎? 還是應該只有所有窗口將使用的MainViewModel的一個實例?

謝謝!

Caliburn.Micro建議使用一個稱為Conductor的概念來很好地處理這種情況。

您可以通過使MainViewModel繼承來自Conductor<T>.Collection.OneActiveConductor<T>.Collection.AllActive來管理一個或多個屏幕的生命周期,具體取決於一次可以顯示多少個活動窗口。

它持有Items是目前進行的項目,並提供OnActivateOnDeactive方法,在那里你可以實現你的激活和失活的邏輯。

這是一個非常強大的框架,但需要您將Caliburn.Micro納入項目並進行自舉,如果使用其他MVVM框架,可能會很麻煩。 但是,您仍然可以實現此概念,或在其他框架中尋找類似的實現。

嘗試在其中使用“框架”和“頁面”。 我認為這是最適合您的解決方案。

您有兩種選擇:

  1. 使用后台代碼打開一個新視圖(我不喜歡這種解決方案,因為它與MVVM不太兼容)
  2. 你可以使用依賴注入

我不知道您是否正在使用特定的MVVM框架(例如Caliburn.Micro,MVVM-light等),因此,如果您正在尋找使用依賴注入的通用解決方案,那么您會發現很多不錯的文章。

我建議您閱讀以下內容:

  1. WPF Master Details MVVM應用程序
  2. 使用MVVM模式時顯示對話框
  3. Cinch V2:我的Cinch MVVM框架的版本2:n的第1部分 -僅“ MEFedMVVM和ViewModel /服務分辨率”一章

暫無
暫無

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

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