2010-09-18 35 views
1

我認爲我獲得了某種知識閃現,現在我完全困惑。我看了很多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應用程序中這樣做?

回答

2

您建議您需要創建3個控件(客戶/訂單/產品),因爲您的設計需要您這樣做。這意味着您的GUI設計人員不能選擇將客戶字段與訂單或產品字段交錯。

現在這可能或可能不是一個好主意......但我認爲這是一個奇怪的限制。 (這意味着你無法重複客戶地址和訂單確認,因爲它位於不同的表格中)。

這並不簡單,其中一種MVVM設計風格比其他風格更爲正確。我建議您查看備選方案並選擇可幫助您解決問題的MVVM風格。而這個1:1的教條似乎並不能幫助你,所以我會拋棄它。

+0

jdv => quote:「(這意味着你無法重複客戶地址和訂單確認,因爲它在不同的表格中)」。這是一個非常好的評論,如此真實!做1:1的視圖/虛擬機的東西我不能混合gui控制什麼是非常非常限制設計師做用戶界面都看起來像方形區域/表... – Elisabeth 2010-09-18 21:01:52

+0

很好關於你的聲明交錯字段是有效的每一個場景實際上1:1的教條並不是很有幫助...首先,如果CustomerList在組合框中,並且在該組合框下,我有像客戶名,姓氏這樣的字段,我必須將CustomerListViewModel與CustomerDetailViewModel ...那可怕... – Elisabeth 2010-09-18 21:59:40

+0

@Lisa:有一個例子,1:1的設計很有意義。也就是說,當你構建一個可定製的插件框架,比如IDE時,用戶可以通過組合構建塊來構建他們的UI。但是在大多數應用程序中,這根本不是一個重要功能,只是增加了學習曲線。 – 2010-09-19 11:48:39

相關問題