![](/img/trans.png)
[英]Is this an acceptable practice of managing views in a WPF application using Prism?
[英]Managing multiple WPF views in an application
所以我看到WPF中存在一個導航服務來維護應用程序的流。 我不是真正進入后退和前進型功能的市場。 我正在尋找一種在按下特定視圖上的按鈕時在視圖之間切換的好方法。 我正在使用MVVM,所以我不確定是否可以讓App.xaml.cs可能包含每個View或ViewModel的副本,並讓ViewModel命令調用App.xaml.cs來進行切換。 也許我應該只是處理按鈕上的Click事件並做一些這種情況.Close(); NewWindow.Show();.
與WPF中的許多內容一樣,雖然可能有一些簡單的解決方案,但這對我來說並不直觀。
謝謝!
我創建了一個“窗口加載器”類,應用程序類在應用程序啟動時實例化。 窗口加載器具有一個字典,用於維護視圖模型類型和視圖類型的關聯。 它還有一個方法,它接受一個視圖模型實例,根據視圖模型的類型解析視圖,立即顯示視圖,將視圖的datacontext設置為視圖模型然后顯示它。 窗口加載器還在視圖模型中注冊事件,該事件在窗口想要關閉時引發。
窗口加載器實現IWindowLoader接口,並且在每個視圖模型中保存對它的引用(當窗口加載器實例化視圖模型時,它將自己分配給視圖模型中的公共IWindowLoader屬性)。 因此,任何視圖模型都可以導致顯示任何其他視圖模型,而無需了解視圖並且不進行顯示本身。 此外,可以輕松地模擬窗口加載器以進行測試。
當我經歷你現在的相同過程時,我發現了許多相同基本模式的例子。 我剛剛結束自己。
解決此問題的方法是引入負責應用程序工作流程的控制器 。 他們在應用程序中創建,顯示和關閉多個視圖。
如何工作可以在WPF應用程序框架(WAF)項目的示例應用程序中看到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.