2012-06-14 122 views
1

我的問題是:查看和視圖模型關係

  1. 能/應當一ViewModel支持多Views
  2. 可以/應該View支持多個ViewModels? (我相信這個問題的答案是肯定的)。

對於這樣一種情況,對於相對較小的模塊,您的視圖相對較小,最佳做法是什麼?因此,在這種情況下,我們應該爲每個視圖創建多個ViewModels,或者我們是否應該使用單個ViewModel來爲同一個模塊中的所有視圖提供服務。注意:較小模塊中的視圖數量限制爲5-6。

回答

1

這是我對這個觀點 -

  1. 是,相同的視圖模型可以用多個視圖使用;例如假設你有一個CustomerViewModel有一個客戶的詳細信息和一些命令,你可以使用這個ViewModel的視圖有一個DataGrid來顯示所有的客戶(所以ObservableCollection<CustomerViewModel>將被使用),也可以使用相同的ViewModel,編輯單個客戶的詳細信息。

  2. 這取決於,但通常不是。如果一個視圖包含多個視圖,則視圖可以依賴於多個ViewModel;比如說,一個具有多個視圖的窗口。例如儀表板上有客戶名單,添加新客戶的表格,顯示產品的部分等。 但是即使在這種情況下,最好創建一個包含其他子視圖模型實例的單個父視圖模型。

    我總是希望有一個視圖模型用於單個視圖,並嘗試以這種方式設計我的應用程序。

但是,這一切都取決於應用程序以及如何設計您的視圖和視圖模型。在MVVM中,您首先基於業務邏輯設計您的模型和視圖模型,然後將它們與您的視圖一起使用。

也看看這個類似的問題 - ViewModel per View or per Model?

0

這取決於。例如,如果您有一個包含一系列觀察的模型,則可以使用相同的服務兩個視圖,一個包含圖表,另一個包含網格。我的意思是你對同一個概念模型有不同的看法。在這種情況下,視圖是一個分割有不同事物子視圖的頁面,對於所有這些部分而言,更好的方法是爲它們提供特定的視圖模型。作爲過去的一種個人經驗,我認爲單一模型具有明確的觀點,但我對此並不滿意,當視圖模型代碼變得過於複雜並最終需要重構時,最終會出現這種情況。