为什么ObservableCollection会隐藏INotifyPropertyChanged.PropertyChanged

时间:2009-05-01 17:27:03

标签: c# wpf xaml observablecollection data-binding

我有一个派生自ObservableCollection的类。我想为这个类添加一些属性(不是集合中的项),但发现它的PropertyChanged实现受到保护。由于它受到保护,我认为这就是我在XAML中绑定到这些新属性的尝试失败的原因。

如果没有创建一个挂起这个实现INotifyPropertyChanged并且包含这些新属性的类的对象,那么有什么办法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

如果类实际实现了接口但是显式地实现了接口,并且在具体实现上放置了访问修饰符,那么您需要做的就是在接口本身的上下文中获取该对象,并且可以使用它。例如..

ObservableCollection collection;

collection.PropertyChanged += ...;

这可能会失败,因为PropertyChanged的实施受到保护。但是,你可以这样做:

ObservableCollection collection;

INotifyPropertyChanged iproperty = collection;

iproperty.PropertyChanged += ...;

这应该有效,因为您将对象作为接口的实例处理,而不是仅仅通过类定义访问接口成员。

我还没有做过任何WPF,所以我不知道ObservableCollection是否实际实现了INotifyPropertyChanged,但如果确实如此,那么这应该可行。

答案 1 :(得分:0)

ObservableCollection确实实现了INotifyPropertyChanged,http://msdn.microsoft.com/en-us/library/bb460458.aspx,但是......

我似乎很快发布了这个问题,我的测试应用程序挑战我的假设。