我有一个派生自ObservableCollection的类。我想为这个类添加一些属性(不是集合中的项),但发现它的PropertyChanged实现受到保护。由于它受到保护,我认为这就是我在XAML中绑定到这些新属性的尝试失败的原因。
如果没有创建一个挂起这个实现INotifyPropertyChanged并且包含这些新属性的类的对象,那么有什么办法可以解决这个问题吗?
答案 0 :(得分:3)
如果类实际实现了接口但是显式地实现了接口,并且在具体实现上放置了访问修饰符,那么您需要做的就是在接口本身的上下文中获取该对象,并且可以使用它。例如..
ObservableCollection collection;
collection.PropertyChanged += ...;
这可能会失败,因为PropertyChanged
的实施受到保护。但是,你可以这样做:
ObservableCollection collection;
INotifyPropertyChanged iproperty = collection;
iproperty.PropertyChanged += ...;
这应该有效,因为您将对象作为接口的实例处理,而不是仅仅通过类定义访问接口成员。
我还没有做过任何WPF,所以我不知道ObservableCollection
是否实际实现了INotifyPropertyChanged
,但如果确实如此,那么这应该可行。
答案 1 :(得分:0)
ObservableCollection确实实现了INotifyPropertyChanged,http://msdn.microsoft.com/en-us/library/bb460458.aspx,但是......
我似乎很快发布了这个问题,我的测试应用程序挑战我的假设。