什么更好? INotifyPropertyChanged还是有单独的* Changed事件?

时间:2009-06-08 15:04:44

标签: c# properties

我正在用C#设计一个新类,它有一些属性。我的用户会想知道每个用户何时发生变化。

什么是更好的选择? INotifyPropertyChanged实现的样式,还是只有与我的属性相对应的单独事件?或两者兼而有之?

2 个答案:

答案 0 :(得分:10)

展望未来,INotifyPropertyChanged是常态,并且在WPF中有更好的支持。我似乎记得BindingList<T>仅尊重INotifyPropertyChanged(请参阅反射器中的HookPropertyChangedUnhookPropertyChanged)。

这也更有效,因为UI只需要一个事件挂钩,而不是每个事件一个 - 并且您的类可以更高效,因为它只需要一个字段用于一个处理程序(而不是每个属性一个,或者不必经过EventHandlerList和一组静态密钥)

旧式主要是宿醉。

答案 1 :(得分:3)

实现INotifyPropertyChanged接口将为您提供额外的好处,即让绑定源自动侦听您对属性所做的更改并更新控件。

尝试这样做。创建一个没有INotifyPropertyChanged接口的类并将其绑定到某个东西。例如,您可以将其中一个属性绑定到TextBox的Text属性。添加一个将更改的按钮,而不是TextBox的文本,但添加绑定到该框的实例中相应属性的值。运行并单击按钮。文本框不会收到有关更改的通知。如果您在类中实现了INotifyPropertyChanged,则通过PropertyChanged让属性的setter通知它的更改,重复实验后,您将看到TextBox更新。