1
在MVVM中,我應該如何實現INotifyPropertyChanged接口:在ViewModel類中還是在Model類中?如果在ViewModel中實現INotifyPropertyChanged接口,如何處理模型的屬性更改事件?如何實現屬性更改通知
在MVVM中,我應該如何實現INotifyPropertyChanged接口:在ViewModel類中還是在Model類中?如果在ViewModel中實現INotifyPropertyChanged接口,如何處理模型的屬性更改事件?如何實現屬性更改通知
首先,你總是在你的視圖模型中實現它,因爲當你更新視圖模型中的數據時,框架使用該接口來更新UI。
您可以在模型中實現它,但它絕不是必需的。如果模型正在從你下面改變,你可以,也可能應該很容易地提出你自己的(語義上更清晰的)視圖模型爲了更新數據而監聽的事件。
實際的實現應該是這樣的(MSDN):
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
質量的答案 - 作爲說明,我通常會用模型去提高,其中值改變視圖模型的控制之外的事件。在模型中通知感覺像對我來說是泥濘的mvvm,再加上我更喜歡它們是基於域的,並且可以在其他上下文中重用。 – kidshaw 2015-04-04 16:04:34