2016-01-09 72 views
1

自從我投身於WPF已經有一段時間了,所以我花了一些時間重新認識一些方法論。在模型或視圖模型上實現INotifyPropertyChanged?

對此MSDN Article - INotifyPropertyChanged應該在你的模型類來實現。這有點令人困惑,因爲在其他文章中我看到在視圖模型上實現了INotifyPropertyChanged。有些甚至在兩者上都實現它。 實現細節是否只是項目特定的,或者是否存在「最佳實踐」方式在wpf和mvvm中實現INotifyPropertyChanged

的一個問題,我將變化通知到模型類看使用像實體框架和數據庫第一種方法的ORM時。每發生一次數據庫更改並更新模型,您寫入的任何代碼都會被覆蓋。我意識到我可能會創建另一個部分類來緩解這個問題,但這看起來太麻煩而且很笨拙。

我一般的問題是:實施變革通知時,什麼是最好的做法是什麼?在模型或視圖模型上實現?

回答

1

我的建議是在需要它的地方使用它。你可以在模型和視圖模型上實現它。

如果你有,你想在你的XAML來跟蹤您的視圖模型的屬性,你就不會創建一個模型來封裝它,因爲這將是矯枉過正。

爲ViewModel實現INotifyPropertyChanged絕對是MVVM模式中的常用方式。

你可以找到這種做法裏面幾個MVVM庫,像MVVM光,其中有從您的ViewModels纔能有INotifyPropertyChanged的繼承ViewModelBase類實現事實上

0

INotifyPropertyChanged通常是整個視圖模型用來通知認爲,一些地方的值發生了變化,它應該重新綁定到適用的數據。

對於模型中的變化:

視圖模型應該知道,一個屬性模型已經改變,只是因爲視圖模型更改屬性