【发布时间】:2014-05-13 08:46:10
【问题描述】:
我有一个实现INotifyPropertyChanged 的类。它有两个属性,其值彼此相关,例如,一个人的名字和姓氏。如果一个属性被更新,另一个属性也需要更新。为了传达这一点,我将 setter 设为私有并添加了一个公共方法来同时更改这两个属性。
我的问题是关于何时引发 PropertyChanged 事件是否有任何规则或约定?我想延迟引发这两个属性的事件,直到状态完全更新并且我的对象的状态是一致的。但是,我不知道这是否会令人惊讶,从而给我的代码的用户带来麻烦,或者可能会在某处混淆某些库代码。
更新
再次查看documentation 发现以下内容:
PropertyChanged 事件可以通过使用 null 或 String.Empty 作为 PropertyChangedEventArgs 中的属性名称来指示对象上的所有属性都已更改。
这可能会解决我的特定问题,尽管如果对象上有许多属性,它似乎不是一个通用的解决方案。
但是,我的问题仍然有效:我们是立即提出 PropertyChanged 还是在某些情况下我们可以/应该稍等片刻。
【问题讨论】:
-
您只需记住
PropertyChanged不需要在 setter 中引发。它们可以从任何需要的地方升起。我认为很明显,您应该在该公共方法的最后引发两个属性的事件。
标签: .net inotifypropertychanged