3

我有一组数据对象,用于实现 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,因此不允许依赖属性等。

4

1 回答 1

1

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

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

于 2009-02-21T00:21:23.553 回答