我有一个继承自ObservableCollection的类。我想为这个类添加一些属性(而不是集合中的项),但发现它的PropertyChanged实现是受保护的。由于它是受保护的,我认为这就是为什么我在XAML中尝试绑定这些新属性失败的原因。
除了创建一个实现INotifyPropertyChanged并包含这些新属性的挂载在此类上的对象之外,我是否忽略了其他解决方法?
我有一个继承自ObservableCollection的类。我想为这个类添加一些属性(而不是集合中的项),但发现它的PropertyChanged实现是受保护的。由于它是受保护的,我认为这就是为什么我在XAML中尝试绑定这些新属性失败的原因。
除了创建一个实现INotifyPropertyChanged并包含这些新属性的挂载在此类上的对象之外,我是否忽略了其他解决方法?
ObservableCollection collection;
collection.PropertyChanged += ...;
这可能会失败,因为它的PropertyChanged
实现是受保护的。但你可以这样做:
ObservableCollection collection;
INotifyPropertyChanged iproperty = collection;
iproperty.PropertyChanged += ...;
这应该是可行的,因为您将对象视为接口的实例,而不仅仅是通过类定义访问接口成员。
我没有做过任何WPF,所以我不知道ObservableCollection
是否实际实现了INotifyPropertyChanged
,但如果它确实实现了,则应该可以正常工作。
ObservableCollection实现了INotifyPropertyChanged,http://msdn.microsoft.com/en-us/library/bb460458.aspx,但是...
我似乎发帖太早了,我的测试应用程序可以验证我的假设。