我有視圖像圖像和ViewModel有處理按鈕(1,2,3,4)點擊的命令。在工作區域允許用戶輸入。根據輸入的用戶可以單擊按鈕;
每個按鈕都會引導一個新窗口(View with ViewModel;其模型將從輸入中獲取)。新窗口有自己的邏輯來顯示數據,取決於注入ViewModel的模型。
根據MVVM標準,我應該在哪裏爲每個按鈕指定相應的View和ViewModels? (在View/View模型中)。 我如何指定相同的?
我有視圖像圖像和ViewModel有處理按鈕(1,2,3,4)點擊的命令。在工作區域允許用戶輸入。根據輸入的用戶可以單擊按鈕;
每個按鈕都會引導一個新窗口(View with ViewModel;其模型將從輸入中獲取)。新窗口有自己的邏輯來顯示數據,取決於注入ViewModel的模型。
根據MVVM標準,我應該在哪裏爲每個按鈕指定相應的View和ViewModels? (在View/View模型中)。 我如何指定相同的?
基本上,ViewModel是View和Model之間的一個鏈接,因此View和Model的每個組合都應該有一個獨立的ViewModel(如果有效)。
在我的經驗,在大多數情況下,我們正在處理二種意見:
對於小視圖普通ViewModels可以用於多個視圖。但對於大視圖(考慮將來可能發生的變化),最好不要使用單個共享ViewModel。然而,使用基本ViewModel類來實現一些共享功能(如果有的話)會很有幫助。
所以牢記這一點和聚焦留標準,我建議:
3210:(根據我想你需要4個問題)都有其獨立的功能(你可以得到所有這些一個BaseWindowVm)。在這裏最好的做法不是讓他們知道他們的父母(MainWindowVm
),只是設置他們的事件處理程序實例化時。這樣你可以避免代碼耦合。
MainWindowVm
:由4個命令和一些其他輸入組成。每個命令執行下列步驟操作:
ViewModel for secondary window
MainWindowVm
(如果你想跟蹤這些窗口)最重要的部分是,由於ViewModel彼此通信,所以將Views與相互鏈接只會使其更復雜,更難以管理。所以視圖就像對其ViewModel綁定的島嶼,其他所有視圖都是ViewModels。
你必須使用PRISM爲這取決於你要求你的工作區,然後加載模塊/視圖定義區域。 – Firoz
感謝您的回覆。我有紅色的一些關於你的答覆的信息。但有沒有其他直接的方法(而不是使用棱鏡/ MVVM光)?因爲我們已經構建了應用程序。現在轉換所有編碼並不容易。 – vaduganathan
你展示你在這裏表現出的視圖頂部的觀點窗口(Window.Show()或Window.ShowDialog()),或者是在工作區中顯示的視圖? – user3411327