2013-02-08 56 views
0

我正在基於MVVM模式的WPF應用程序。WPF MVVM - 如何安排ViewModels

對於一個特定的實體,我有一個包含實體屬性的模型,一個實現INotifyPropertyChanged並具有一些額外邏輯以及公開Model和兩個Views的屬性的視圖模型,一個用於創建,一個用於編輯實體。

我創建一個ViewModel進行編輯並創建視圖,並在編輯時傳遞實體的ID以便可以檢索現有數據。

我不能工作是如何組織的ViewModels在這種情況下,即:

  1. 我應該有一個EntityViewModel爲其中EntityViewModel暴露模型的性能和EditEntityViewModel的屬性EditEntityViewModel處理命令和其他邏輯?如果我這樣做,那麼我不認爲EntityViewModel被通知在視圖中的變化。
  2. 我應該有兩個獨立的ViewModel,彼此之間一無所知嗎?
  3. 我應該有一個ViewModel的頁面,它暴露了模型的屬性以及處理命令和其他邏輯?
  4. 還有別的嗎?

我知道我應該有一個ViewModel每個視圖,但我不完全知道如何定義一個單獨的視圖。你可能會說我對於如何實現這個框架有點困惑。

非常感謝您的幫助。

回答

1

不要讓它複雜化。儘量保持你的視圖模型模型1:1的關係。因此,您的視圖模型將公開方法來支持模型上的所有CRUD方法。另外,考慮使用一個視圖,而不是兩個。他們之間有很多重疊,所以我認爲這是有道理的。你將有更少的類來編寫和維護。我認爲你的名單上的#3,使用一種觀點的方法,是你最好的選擇。

+0

感謝您的支持。它是有道理的,但如果我有另一個視圖使用同一個實體的可觀察集合來顯示多個項目,該怎麼辦?直到現在我已經創建了一個可觀察的集合(Of EntityViewModel)。如果我遵循你所說的併爲這個模型建立了一個ViewModel,那麼我會在它內部有與多個視圖相關的邏輯。那有意義嗎? – 2013-02-11 10:09:38

+0

我試圖讓我的視圖模型精益求精,並且不要將太多邏輯放入它們中。也許你的邏輯屬於共享數據訪問類或類似的東西?我認爲在不同的視圖模型中重複您的可觀察集合是可以接受的。 – 2013-02-11 14:25:11

+0

考慮了一些,並採納了你在原始答案中所說的話,我想我現在對如何應用這一點有了更好的理解。謝謝你的幫助大爸爸。 – 2013-02-11 14:45:50