好的這裏有一點值得思考。將viewmodel與model結合使用
MVVM聲明Model與ViewModel不可知。所以ViewModel公開了View綁定的屬性。
微軟代碼分析規則告訴我將一個屬性添加到模型中的公共變量中。
警告:CA1051:Microsoft.Design:因爲現場「Employee.name」是 可見其聲明類型之外,它的可改變 私人和領域 有添加屬性,用相同的可訪問性目前,爲了提供訪問權限。
現在它的2個重複屬性,我寧願讓它幹,所以我想合併ViewModel和視圖。這裏還有一件事,Model是一個POCO,並且沒有INotifyPropertyChanged,所以讓VM知道Model值的變化是另一個問題。我使用了很多基於IList的綁定
我可能會忽略未來的問題嗎?
編輯:我忘了提及,我看着how to correctly define Model to ViewModel relation?,在我們的軟件中還有一件事是我們有一個單獨的實體,它填充了IList,它是一個SERVICE/UTILITY Assembly。 EmployeeViewModel在一個單獨的VIEW Assembly中。所以我無法返回ILIst。
馬修,謝謝你的INotifyPropertyChanged的實現是很「代碼級特徵」的代碼! ViewModel的。具體到我的項目,底層模型的價值可能會改變。那麼我的ViewModel如何知道這個?我的模型實際上沒有ViewModel可以描述的INotifyPropertyChanged(如果它有一個PropertyChanged處理程序,它不只是一個Model ..它是一個ViewModel)。我覺得對於這個特定的需求教科書MVVM只是沒有發生 – 2013-03-19 09:17:24
你可以將你的模型包裝在實現INPC的類中。然而,這意味着你有許多樣板代碼暴露每個屬性並觸發propertychanged – failedprogramming 2013-03-19 09:32:44
通常的設計假設沒有其他任何東西會改變背後的模型。如果這是一種可能性,那麼該模型必須提供一種方式來表明發生了變化。有很多方法可以做到這一點,INPC只是其中之一,但它確實需要一些知道該模型實際上已經改變的事物的積極參與。 – 2013-03-19 10:30:54