C# 为什么ObservableCollection隐藏INotifyPropertyChanged.PropertyChanged
我有一个从ObservaleCollection派生的类。我想向这个类添加一些属性(不是集合中的项),但发现它的PropertyChanged实现受到保护。由于它是受保护的,我认为这就是为什么我尝试绑定到XAML中的这些新属性失败的原因C# 为什么ObservableCollection隐藏INotifyPropertyChanged.PropertyChanged,c#,wpf,xaml,observablecollection,data-binding,C#,Wpf,Xaml,Observablecollection,Data Binding,我有一个从ObservaleCollection派生的类。我想向这个类添加一些属性(不是集合中的项),但发现它的PropertyChanged实现受到保护。由于它是受保护的,我认为这就是为什么我尝试绑定到XAML中的这些新属性失败的原因 除了创建一个挂起这个实现INotifyPropertyChanged并包含这些新属性的类的对象之外,有没有一种我忽略的解决方法?如果该类确实实现了接口,但显式实现了接口,并在具体实现上放置了访问修饰符,您只需在接口本身的上下文中获取该对象,就可以使用它。例如 O
除了创建一个挂起这个实现INotifyPropertyChanged并包含这些新属性的类的对象之外,有没有一种我忽略的解决方法?如果该类确实实现了接口,但显式实现了接口,并在具体实现上放置了访问修饰符,您只需在接口本身的上下文中获取该对象,就可以使用它。例如
ObservableCollection collection;
collection.PropertyChanged += ...;
这可能会失败,因为PropertyChanged
的实现受到保护。但是,您可以这样做:
ObservableCollection collection;
INotifyPropertyChanged iproperty = collection;
iproperty.PropertyChanged += ...;
这应该是可行的,因为您将对象作为接口的实例处理,而不仅仅是通过类定义访问接口成员
我没有做过任何WPF,所以我不知道
ObservaleCollection
是否实际实现了INotifyPropertyChanged
,但如果它实现了,那么这应该会起作用。ObservaleCollection确实实现了INotifyPropertyChanged,但是
我很快就发布了这个问题,似乎我的测试应用程序可以挑战我的假设。我测试了我的答案,发现我错了,抱歉误导了你,或者至少是无意中尝试了。