2009-05-01 74 views
4

我有从的ObservableCollection派生的类。我想为这个类添加一些属性(不是集合中的项目),但发现它的PropertyChanged实现是受保护的。由于它的保护我假设这就是为什么我尝试绑定到XAML中的这些新属性失败。为什么隐藏的ObservableCollection INotifyPropertyChanged.PropertyChanged

短创建挂起关闭这个类实现INotifyPropertyChanged和容纳这些新的特性,有没有解决的办法是我俯瞰的对象?

回答

4

如果类实际上实现了接口,但这样做明确并且对具体实施访问修饰符,所有你需要做的就是让该对象在接口本身的背景下,你可以使用它。例如..

ObservableCollection collection; 

collection.PropertyChanged += ...; 

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

ObservableCollection collection; 

INotifyPropertyChanged iproperty = collection; 

iproperty.PropertyChanged += ...; 

这应该工作,因为你正在使用的对象处理为接口的实例,而不是仅仅通过类定义访问接口的成员。

我还没有做任何WPF,所以我不知道ObservableCollection实际上是否实现INotifyPropertyChanged,但如果它确实,那么这应该工作。

1

的ObservableCollection不执行INotifyPropertyChanged,http://msdn.microsoft.com/en-us/library/bb460458.aspx,但是......

我张贴了这个问题为时过早看来,我的测试程序来挑战我的假设工作。

+0

我测试了我的回答,我发现我错了,误导你,或者至少无意中试图遗憾。 – DevinB 2009-05-01 17:46:37