2011-06-07 90 views
4

我想知道在所有wpf窗口/視圖中共享菜單的最佳方法是什麼。重新使用mvvm和wpf的菜單

我的應用程序不適合導航模型,所以可能會使用功能區控件。

我傾向於爲菜單創建一個用戶控件並將其放在每個視圖上,但也看到了Josh Smith的msdn文章,他在其中加載用戶控件。

是否有其他選擇或建立的最佳實踐?

在此先感謝。

回答

0

這裏就是我可能會嘗試:

  • 定義一個ISharedMenu接口
  • 創建一個使用了ISharedMenu作爲其DataContext的一個用戶控件。
  • 對於您要使用共享菜單的每個ViewModel,實現ISharedMenu接口。
+0

謝謝@jberger我喜歡那個apporoach,並且已經可以想到另一種情況了,它會被使用。在這種情況下使用它的麻煩是,我將不得不在所有頁面中重新實現導航邏輯,並且如果我使用Ribbon控件,最終可能會有相當多的邏輯。 – PaulP 2011-06-08 13:53:41

+0

我看到了你的困境(關於不得不在所有頁面中重新實現),但是我給出的答案的好處是邏輯將只在一個地方而不是每個頁面。但是,如果它有效,請隨你所得。 – 2011-06-08 15:59:46

1

我最終以類似於喬什史密斯的方式實施;然而,我已經簡化了一些東西。

所有視圖都是usercontrols,除了MainWindow。 MainWindow包含一個ContentTemplate,它綁定到一個屬性,該屬性持有對視圖模型中單個UserControl的引用。 然後我有一個ApplicationController負責控制視圖和視圖模型生命週期。 每個視圖使用的ViewModel基類包含對IApplicationController的引用。 MainWindowViewModel然後調用ApplicationController加載一個新的視圖等。

仍然不是100%的這種方法,所以會歡迎任何進一步的建議。