Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么ObservableCollection隐藏INotifyPropertyChanged.PropertyChanged_C#_Wpf_Xaml_Observablecollection_Data Binding - Fatal编程技术网

C# 为什么ObservableCollection隐藏INotifyPropertyChanged.PropertyChanged

C# 为什么ObservableCollection隐藏INotifyPropertyChanged.PropertyChanged,c#,wpf,xaml,observablecollection,data-binding,C#,Wpf,Xaml,Observablecollection,Data Binding,我有一个从ObservaleCollection派生的类。我想向这个类添加一些属性(不是集合中的项),但发现它的PropertyChanged实现受到保护。由于它是受保护的,我认为这就是为什么我尝试绑定到XAML中的这些新属性失败的原因 除了创建一个挂起这个实现INotifyPropertyChanged并包含这些新属性的类的对象之外,有没有一种我忽略的解决方法?如果该类确实实现了接口,但显式实现了接口,并在具体实现上放置了访问修饰符,您只需在接口本身的上下文中获取该对象,就可以使用它。例如 O

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


除了创建一个挂起这个实现INotifyPropertyChanged并包含这些新属性的类的对象之外,有没有一种我忽略的解决方法?

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

ObservableCollection collection;

collection.PropertyChanged += ...;
这可能会失败,因为
PropertyChanged
的实现受到保护。但是,您可以这样做:

ObservableCollection collection;

INotifyPropertyChanged iproperty = collection;

iproperty.PropertyChanged += ...;
这应该是可行的,因为您将对象作为接口的实例处理,而不仅仅是通过类定义访问接口成员


我没有做过任何WPF,所以我不知道
ObservaleCollection
是否实际实现了
INotifyPropertyChanged
,但如果它实现了,那么这应该会起作用。

ObservaleCollection确实实现了INotifyPropertyChanged,但是


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

我测试了我的答案,发现我错了,抱歉误导了你,或者至少是无意中尝试了。