C# 如何实现属性更改通知
在MVVM中,我应该如何实现INotifyPropertyChanged接口:在ViewModel类中还是在Model类中?如果在ViewModel中实现了INotifyPropertyChanged接口,如何处理模型的属性更改事件?首先,您总是在视图模型中实现它,因为当您更新视图模型中的数据时,框架使用该接口来更新UI 您可以在模型中实现它,但这绝不是必需的。如果模型正在从您下面更改,您可以,而且很可能应该,轻松地引发视图模型侦听的您自己的(语义更清晰的)事件,以便更新其数据 实际实现应该如下所示():C# 如何实现属性更改通知,c#,wpf,mvvm,C#,Wpf,Mvvm,在MVVM中,我应该如何实现INotifyPropertyChanged接口:在ViewModel类中还是在Model类中?如果在ViewModel中实现了INotifyPropertyChanged接口,如何处理模型的属性更改事件?首先,您总是在视图模型中实现它,因为当您更新视图模型中的数据时,框架使用该接口来更新UI 您可以在模型中实现它,但这绝不是必需的。如果模型正在从您下面更改,您可以,而且很可能应该,轻松地引发视图模型侦听的您自己的(语义更清晰的)事件,以便更新其数据 实际实现应该如下
高质量的回答-如前所述,我通常会使用模型引发事件,其中值的更改超出视图模型的控制范围。对我来说,模型中的Notify感觉像是混浊的mvvm,而且我更喜欢它们是基于域的,并且可以在其他上下文中重用。
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}