使用自定义事件处理属性值更改
在回答有关在属性值更改时引发事件的问题时,需要注意的是INotifyPropertyChanged 接口通过事件进行操作。该接口提供了一个事件 PropertyChanged,消费者可以订阅该事件。
但是,INotifyPropertyChanged 的更可靠实现需要仔细管理该事件:
protected void OnPropertyChanged(PropertyChangedEventArgs e) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, e); } protected void OnPropertyChanged(string propertyName) { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); }
这种方法隔离了属性更改通知方法,简化属性处理,并完全实现 INotifyPropertyChanged 接口。此外,您还可以为特定属性更改创建自定义事件:
protected void OnImageFullPathChanged(EventArgs e) { EventHandler handler = ImageFullPathChanged; if (handler != null) handler(this, e); } public event EventHandler ImageFullPathChanged;
使用 .Net 4.5 中引入的“CallerMemberAttribute”,您可以利用隐式属性名称调用:
protected void OnPropertyChanged( [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "") { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); }
以上是如何使用事件有效处理 C# 中的属性值变化?的详细内容。更多信息请关注PHP中文网其他相关文章!