为什么ObservableCollection隐藏了INotifyPropertyChanged.PropertyChanged?

3

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

除了创建一个实现INotifyPropertyChanged并包含这些新属性的挂载在此类上的对象之外,我是否忽略了其他解决方法?

2个回答

3
如果类实际上显式地实现了接口并在具体实现上放置了访问修饰符,那么你只需要在接口的上下文中获取该对象,就可以使用它。例如...
ObservableCollection collection;

collection.PropertyChanged += ...;

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

ObservableCollection collection;

INotifyPropertyChanged iproperty = collection;

iproperty.PropertyChanged += ...;

这应该是可行的,因为您将对象视为接口的实例,而不仅仅是通过类定义访问接口成员。

我没有做过任何WPF,所以我不知道ObservableCollection是否实际实现了INotifyPropertyChanged,但如果它确实实现了,则应该可以正常工作。


0

我测试了我的答案并发现我错了,很抱歉误导了你,或者至少是无意中尝试这样做。 - DevinB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接