簡體   English   中英

WPF MVVM應用程序中的高級導航

[英]Advanced Navigation in WPF MVVM Application

我正在開發一個基於WPF的MVVM應用程序,並且有一個問題與我的應用程序中接近視圖導航的最佳方式有關。 具體來說,當我有多個可能導致導航的視圖時,我感興趣的是最簡潔的方法來實現此導航。

讓我總結一下我目前的應用程序布局,以便我可以更好地解釋問題。

上圖顯示了我的主shell的粗略布局。 主導航區域是靜態的,並提供許多按鈕。 存在主要應用程序功能的按鈕,例如狀態,配置,診斷等。當按下其中一個按鈕時,將設置上下文導航區域的內容。 具體而言,這通過使上下文導航區域包含內容控件來實現,其中Content屬性綁定到ViewModelBase類型的單個屬性。 此外,視圖模型和視圖與應用程序資源中的數據模板綁定在一起。

然后,在上下文導航內容控件中填充的特定視圖/視圖模型提供與在主導航中選擇的主要功能相關的附加導航選項。 當在上下文導航中選擇選項時,主內容區域的更新方式與先前使用上下文導航所描述的方式完全相同。

所以我想你可以描述MainNavigationContextualNavigation區域的組合, MainNavigation與Outlook Style菜單欄非常相似。 即底部的主要選擇,頂部的次要選擇,導致主要內容區域的變化。

現在來問題了。 我可以做這個工作,但它開始變得非常混亂! 我有MainNavigationViewModel導致導航,以及多個上下文ViewModels ,它們被填充到ContextualNavigation區域導致導航。 在某些情況下,主要內容區域中的動作也可能也產生導航需求。 我實際上還有一個Ribbon控件,也可能導致一些導航。 所以我的導航遍布整個ViewModels ,我不相信它是可維護的。 PS。 如果您想知道,我目前正在使用信使系統來允許視圖模型之間的分離通信。

我開始認為最好的方法是創建一個抽象服務,負責我應用程序中所有視圖模型的導航,但不確定它會是什么樣子。 我在這里是否正確,如果是這樣,是否有人對應用程序范圍導航服務有任何建議,處理來自多個視圖模型的導航?

首先是你使用的MVVM方法? 首先查看或查看模型?

正確的選擇可以讓你的生活更輕松。

您已經擁有的想法是正確的方向接口和繼承 - 抽象導航層。

如果你已經使用Messanger它實際上遵循類似的方法。 在您的情況下,架構計划將是不必要的,花時間並將其繪制下來。

暫無
暫無

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

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