我有一个派生自 ObservableCollection 的类。我想向此类(不是集合中的项目)添加一些属性,但发现它的 PropertyChanged 实现受到保护。由于其 protected ,我认为这就是我尝试绑定(bind)到 XAML 中的这些新属性的尝试失败的原因。
如果没有创建一个卡在实现 INotifyPropertyChanged 并包含这些新属性的类之外的对象,是否有我忽略的解决方法?
最佳答案
如果该类实际上实现了该接口(interface),但显式实现了该接口(interface)并在具体实现上放置了访问修饰符,那么您需要做的就是在接口(interface)本身的上下文中获取该对象,然后您就可以使用它了。例如..
ObservableCollection collection;
collection.PropertyChanged += ...;
这可能会失败,因为它的 PropertyChanged
实现是 protected 。但是,您可以这样做:
ObservableCollection collection;
INotifyPropertyChanged iproperty = collection;
iproperty.PropertyChanged += ...;
这应该可行,因为您将对象作为接口(interface)的一个实例来处理,而不是仅仅通过类定义访问接口(interface)成员。
我没有做过任何 WPF,所以我不知道 ObservableCollection
是否真的实现了 INotifyPropertyChanged
,但如果它实现了,那么这应该可行。
关于c# - 为什么 ObservableCollection 隐藏 INotifyPropertyChanged.PropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812353/