我認爲我獲得了某種知識閃現,現在我完全困惑。我看了很多MVVM實現比如海洋,東西,BBQShack,MVVM演示,WAF,Chinch1,2等等當一個視圖有一個ViewModel時,客戶訂購產品關係/ gui會變得非常討厭
大家都在做MVVM不同莫名其妙......
有一種情況就是推動我堅果。我錯過了理解,希望有人能夠清除我腦海中的雲。
但在此之前我想從傑里米Likness發表評論:
「我相信大多數開發商認爲,一個視圖應該有一個確切的視圖模型沒有必要多的ViewModels附加到一個單一的。如果你考慮分離關注點,這是有道理的,因爲如果你在綁定到「公司視圖模型」的「contact viewmodel」和「company widget」的屏幕上有一個「contact widget」,它們應該是單獨的視圖,而不是具有兩個視圖模型的單個視圖。「
場景:如果視圖ONE視圖模型或一個ViewModel被綁定到一個用戶控件...
問題:我需要創建用戶控件3 CustomerView,訂單查看,ProductView的每個視圖模型?如果是的話,如何在後臺3個用戶控件和3個ViewModel之間同步GUI中的數據綁定?使用消息系統?
如果你的答案是YES ,那麼爲什麼我不應該建立的一個與BillingViewModel作爲控制器的大用戶控件暴露它可以很容易地結合到頂部control`s的datacontext財產的ObservableCollection CustomerListWithAllOrdersAndProducts和所有3個網格(客戶等...)下面綁定到當前的數據上下文。然後更改客戶會自動更改訂單和產品...
如何處理這種情況時,不僅有3個用戶控件像DataGrids在一個屏幕中,但也有客戶形式與5個文本框和一個訂單3個文本框的公式,你會把這些公式放在進一步的2個用戶控件中,所以你有5個用戶控件在窗口中,並且所有這些都通過與Messenger系統通信的ViewModel「映射」。這會變得非常混亂......是不是真的這樣,他們在大型mvvm應用程序中這樣做?
jdv => quote:「(這意味着你無法重複客戶地址和訂單確認,因爲它在不同的表格中)」。這是一個非常好的評論,如此真實!做1:1的視圖/虛擬機的東西我不能混合gui控制什麼是非常非常限制設計師做用戶界面都看起來像方形區域/表... – Elisabeth 2010-09-18 21:01:52
很好關於你的聲明交錯字段是有效的每一個場景實際上1:1的教條並不是很有幫助...首先,如果CustomerList在組合框中,並且在該組合框下,我有像客戶名,姓氏這樣的字段,我必須將CustomerListViewModel與CustomerDetailViewModel ...那可怕... – Elisabeth 2010-09-18 21:59:40
@Lisa:有一個例子,1:1的設計很有意義。也就是說,當你構建一個可定製的插件框架,比如IDE時,用戶可以通過組合構建塊來構建他們的UI。但是在大多數應用程序中,這根本不是一個重要功能,只是增加了學習曲線。 – 2010-09-19 11:48:39