我有一个派生自 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,但是......
我似乎过早地发布了这个问题,我的测试应用程序可以挑战我的假设。