是否有任何版本的`INotifyPropertyChanged`用于多次更改?

时间:2016-09-13 11:57:02

标签: c# .net inotifypropertychanged

我在GoF一书中了解了 Observer 模式。

.Net Framework包含INotifyPropertyChanged接口。 .Net Framework具有类似的界面,但用于通知更改属性集而不是通知每个属性已更改(提高生产力)?

我为我的应用程序创建了这样的接口INotifySubjectChanged(它的事件参数包含一组已更改的属性),但也许.Net Framework已经拥有它并且我发明了一辆自行车。

我在Bitbucket.org here上发布了我的简单代码源代码。可能更清楚我想做什么。

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:3)

MSDN声明将属性名称留空意味着对象上的所有属性都已更改。

https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.propertychanged(v=vs.110).aspx

  

PropertyChanged事件可以通过使用null或String.Empty作为PropertyChangedEventArgs中的属性名来指示对象上的所有属性都已更改。

这可能与您从.NET框架中获得的内容一样接近。请注意,错误地使用此项并在较少数量的属性发生更改时调用它可能会在某些情况下降低性能。

如果对象是一个集合(你说它不是),你可以利用INotifyCollectionChanged进行记录。

如果您担心性能和效率,我首先要确保您确实遇到性能问题,并且更改通知会导致这些性能问题。

如果您不关心使用WPF数据绑定的实现,并且它的行为相对清楚,那么我不会发现自定义界面和事件有任何问题。