我看到了两种INotifyPropertyChanged
的实现方式。
第一种:
public abstract class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } }
第二个:
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
在第二个方法中,您会看到一个额外的属性 [NotifyPropertyChangedInvocator]
在方法 OnPropertyChanged
上。
在我的情况下,两者行为相同,但是何时、为什么以及如何使用这个 [NotifyPropertyChangedInvocator]
属性?使用它有什么好处?我在互联网上搜索了很多,但没有找到什么好的答案。
string
或使用Expression<Func<T>>
的方法)。 - jeromej