c# - 是否存在用于多个更改的 `INotifyPropertyChanged` 版本?

标签 c# .net inotifypropertychanged

我在 GoF 中读到了观察者 模式书。

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

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

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

enter image description here

enter image description here

enter image description here

最佳答案

MSDN 指出,将属性名称留空意味着对象的所有属性都已更改。

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

The PropertyChanged event can indicate all properties on the object have changed by using either null or String.Empty as the property name in the PropertyChangedEventArgs.

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

为了记录对象是否是一个集合(您说它不是),您可以利用 INotifyCollectionChanged。

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

如果您不关心使用 WPF 数据绑定(bind)的实现,并且它的行为相对清楚,那么我认为自定义接口(interface)和事件没有任何问题。

关于c# - 是否存在用于多个更改的 `INotifyPropertyChanged` 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469476/

相关文章:

c# - 通过设置属性值创建新对象的 2 种方法

c# - 在 WPF 中对原始图像应用放大/缩小

c# - Slim 同步类是按 AppDomain 还是按进程?

.net - 我可以在可移植类库中使用 OData 客户端代码吗?

mvvm - WPF MVVM 命令 CanExecute,仅在焦点更改时重新评估

c# - .NET 加密类的线程安全性?

c# - 如何解析这个? ftpWebRequest ListDirectorDetials

c# - Xamarin.UiTest 查询没有 id 和文本的控件

c# - TwoWay 绑定(bind)一个实现 INotifyPropertyChanged 的​​类,没有任何反应

c# - Windows 8 应用程序的 ViewModel 中的依赖属性与 INotifyPropertyChanged