2014-04-05 89 views
0

See the image其他視圖依賴關係?

我有視圖像圖像和ViewModel有處理按鈕(1,2,3,4)點擊的命令。在工作區域允許用戶輸入。根據輸入的用戶可以單擊按鈕;

每個按鈕都會引導一個新窗口(View with ViewModel;其模型將從輸入中獲取)。新窗口有自己的邏輯來顯示數據,取決於注入ViewModel的模型。

根據MVVM標準,我應該在哪裏爲每個按鈕指定相應的View和ViewModels? (在View/View模型中)。 我如何指定相同的?

+0

你必須使用PRISM爲這取決於你要求你的工作區,然後加載模塊/視圖定義區域。 – Firoz

+0

感謝您的回覆。我有紅色的一些關於你的答覆的信息。但有沒有其他直接的方法(而不是使用棱鏡/ MVVM光)?因爲我們已經構建了應用程序。現在轉換所有編碼並不容易。 – vaduganathan

+0

你展示你在這裏表現出的視圖頂部的觀點窗口(Window.Show()或Window.ShowDialog()),或者是在工作區中顯示的視圖? – user3411327

回答

0

基本上,ViewModel是View和Model之間的一個鏈接,因此View和Model的每個組合都應該有一個獨立的ViewModel(如果有效)。

在我的經驗,在大多數情況下,我們正在處理二種意見:

  1. 小意見如圖標,先進的按鈕等(這是更孤立,更容易有沒有參考他們的父母,使他們易於管理和推廣)
  2. 大的意見如窗口,面板(其中有很多的孩子,更容易在以後進行更改)

對於小視圖普通ViewModels可以用於多個視圖。但對於大視圖(考慮將來可能發生的變化),最好不要使用單個共享ViewModel。然而,使用基本ViewModel類來實現一些共享功能(如果有的話)會很有幫助。

所以牢記這一點和聚焦留標準,我建議:

  • ​​3210:(根據我想你需要4個問題)都有其獨立的功能(你可以得到所有這些一個BaseWindowVm)。在這裏最好的做法不是讓他們知道他們的父母(MainWindowVm),只是設置他們的事件處理程序實例化時。這樣你可以避免代碼耦合。

  • MainWindowVm:由4個命令和一些其他輸入組成。每個命令執行下列步驟操作:

    1. 實例化一個視圖
    2. 實例基於輸入
    3. 一套虛擬機的事件處理程序ViewModel for secondary window
    4. 分配虛擬機的DataContext視圖
    5. 添加虛擬機的一些列表MainWindowVm(如果你想跟蹤這些窗口)
    6. ShowDialog()

最重要的部分是,由於ViewModel彼此通信,所以將Views與相互鏈接只會使其更復雜,更難以管理。所以視圖就像對其ViewModel綁定的島嶼,其他所有視圖都是ViewModels。