3

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

如果没有创建一个挂起这个实现 INotifyPropertyChanged 并容纳这些新属性的类的对象,有没有一种我忽略的方法?

4

2 回答 2

3

如果该类实际上实现了接口,但显式地这样做并在具体实现上放置了访问修饰符,那么您需要做的就是在接口本身的上下文中获取该对象,然后您就可以使用它了。例如..

ObservableCollection collection;

collection.PropertyChanged += ...;

这可能会失败,因为它的实现PropertyChanged是受保护的。但是,您可以这样做:

ObservableCollection collection;

INotifyPropertyChanged iproperty = collection;

iproperty.PropertyChanged += ...;

这应该可以工作,因为您将对象作为接口的实例来处理,而不仅仅是通过类定义访问接口成员。

我还没有做过任何 WPF,所以我不知道是否ObservableCollection真的实现INotifyPropertyChanged了,但如果确实如此,那么这应该可以工作。

于 2009-05-01T17:35:47.547 回答
0

ObservableCollection 确实实现了 INotifyPropertyChanged, http: //msdn.microsoft.com/en-us/library/bb460458.aspx,但是......

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

于 2009-05-01T17:43:30.557 回答