当子列表更改时,我应该如何处理INotifyPropertyChanged

时间:2009-02-20 23:10:05

标签: winforms data-binding inotifypropertychanged

我有一组数据对象,我用于实现INotifyPropertyChanged接口的数据绑定,我试图弄清楚如何处理复杂类型的属性。

如果我有类似

的话

class C {
 private string text;
 public string Text {
  get { return text; }
  set {
   if(Text != value) {
    text = value;
    OnPropertyChanged("Text");
   }
  }
 }
}

我知道该怎么做,但是如果该属性是可变的,那么我应该通知该类型的更改。

如果属性本身实现了INotifyPropertyChanged,可能我可以处理该事件并将其冒泡,但是如果引发ListChangedEvent(比如它是一个IBindingList),我应该这样做吗?

这是.NET 2.0,因此不允许依赖属性等。

1 个答案:

答案 0 :(得分:1)

如果您有一个公开复杂类型的属性,则只有在将实例更改为复杂类型时,才需要在复杂类型上的属性更改时引发PropertyChanged事件。当其中一个属性发生更改时,复杂类型应该引发它自己的PropertyChanged事件(您不必将事件冒泡到父对象)。

重申一下,您应该只在属性值更改时引发PropertyChanged事件,而不是在子属性更改时引发。您提供的示例代码是您的所有属性集应该是什么样的。