2011-02-24 29 views
4

MVVM Light名氣的Laurent向我介紹MVVM,一個視圖的約定有一個視圖模型。那麼用戶控件的經驗法則是什麼?一個ViewModel用於每個用戶控件?在創建利用多個用戶控件的視圖時,是否創建另一個視圖模型來聚合用戶控件視圖模型?MVVM /用戶控件和視圖= ViewModel約定

在此先感謝您的意見。

理查德

回答

4

在我的MVVM的項目我都傾向於你有什麼建議:每個用戶控件一個視圖模型與其他視圖模型是這些聚集一起。

聚合ViewModel通常是一個窗口的ViewModel,而不是另一個UserControl--雖然這不是必需的,但可能更多的是我的偏好和歷史以及我主要在WPF中工作的結果。

我沒有一個UserControl獨立的ViewModel的地方是我創建非常特定的可重用UserControls的地方 - 像特定視覺效果的按鈕或自定義滑塊。

這反映在我的項目結構中 - 我有UserControls(沒有ViewModels)和Views或Windows或UserControls的兩個標準文件夾,並且它們總是具有ViewModels。

2

One ViewModel for each user control?

是的,一般來說。 UserControl通常不過是另一個View。這通常意味着每個用戶控件都有一個ViewModel,用一個「父」VM來聚合它(以匹配聚合數據的視圖)。

但有一些例外:如果UserControl實際上只是一個自定義控件,而不是綁定到特定的業務,它可能是「純視圖」。在這種情況下,您可能不想擁有該控件的虛擬機,因爲它是100%查看。