2014-10-03 80 views
1

在MVVM中,我應該如何實現INotifyPropertyChanged接口:在ViewModel類中還是在Model類中?如果在ViewModel中實現INotifyPropertyChanged接口,如何處理模型的屬性更改事件?如何實現屬性更改通知

回答

3

首先,你總是在你的視圖模型中實現它,因爲當你更新視圖模型中的數據時,框架使用該接口來更新UI。

可以在模型中實現它,但它絕不是必需的。如果模型正在從你下面改變,你可以,也可能應該很容易地提出你自己的(語義上更清晰的)視圖模型爲了更新數據而監聽的事件。

實際的實現應該是這樣的(MSDN):

private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
    { 
     var handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
+0

質量的答案 - 作爲說明,我通常會用模型去提高,其中值改變視圖模型的控制之外的事件。在模型中通知感覺像對我來說是泥濘的mvvm,再加上我更喜歡它們是基於域的,並且可以在其他上下文中重用。 – kidshaw 2015-04-04 16:04:34