【发布时间】:2014-06-06 10:44:12
【问题描述】:
我看到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)); } } }
在第二个中,您会看到方法 OnPropertyChanged 上有一个额外的属性 [NotifyPropertyChangedInvocator]
在我的情况下,两者的行为相同,但是什么,为什么以及何时使用这个[NotifyPropertyChangedInvocator],这样做有什么好处?我在互联网上搜索过,但找不到任何好的答案。
【问题讨论】:
标签: c# wpf windows-phone-8 windows-8.1 c#-5.0