我正在用C#设计一个新类,它有一些属性。我的用户会想知道每个用户何时发生变化。
什么是更好的选择? INotifyPropertyChanged实现的样式,还是只有与我的属性相对应的单独事件?或两者兼而有之?
答案 0 :(得分:10)
展望未来,INotifyPropertyChanged
是常态,并且在WPF中有更好的支持。我似乎记得BindingList<T>
仅尊重INotifyPropertyChanged
(请参阅反射器中的HookPropertyChanged
和UnhookPropertyChanged
)。
这也更有效,因为UI只需要一个事件挂钩,而不是每个事件一个 - 并且您的类可以更高效,因为它只需要一个字段用于一个处理程序(而不是每个属性一个,或者不必经过EventHandlerList
和一组静态密钥)
旧式主要是宿醉。
答案 1 :(得分:3)
实现INotifyPropertyChanged接口将为您提供额外的好处,即让绑定源自动侦听您对属性所做的更改并更新控件。
尝试这样做。创建一个没有INotifyPropertyChanged接口的类并将其绑定到某个东西。例如,您可以将其中一个属性绑定到TextBox的Text属性。添加一个将更改的按钮,而不是TextBox的文本,但添加绑定到该框的实例中相应属性的值。运行并单击按钮。文本框不会收到有关更改的通知。如果您在类中实现了INotifyPropertyChanged,则通过PropertyChanged让属性的setter通知它的更改,重复实验后,您将看到TextBox更新。