我有一组数据对象,我用于实现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,因此不允许依赖属性等。
答案 0 :(得分:1)
如果您有一个公开复杂类型的属性,则只有在将实例更改为复杂类型时,才需要在复杂类型上的属性更改时引发PropertyChanged事件。当其中一个属性发生更改时,复杂类型应该引发它自己的PropertyChanged事件(您不必将事件冒泡到父对象)。
重申一下,您应该只在属性值更改时引发PropertyChanged事件,而不是在子属性更改时引发。您提供的示例代码是您的所有属性集应该是什么样的。