无法使用ObservableCollection中的PropertyChanged

时间:2015-03-17 19:40:38

标签: c# wpf

我很困惑。我尝试使用PropertyChanged中的ObservableCollection事件,但编译器不知道该事件。 CollectionChanged他知道。 MSDN说ObservableCollection有事件(https://msdn.microsoft.com/en-us/library/ms653376.aspx)。我做错了什么?

ObservableCollection<int> xx = new ObservableCollection<int>();
xx.PropertyChanged += (s, a) => { };

1 个答案:

答案 0 :(得分:3)

PropertyChangedprotected event,这就是为什么无法从您的代码中访问它。正如您所知,protected意味着它只能从自身和派生类中访问。

当谈到ObservableCollection时,我们有一个事件CollectionChanged来知道集合何时发生变化(项目被删除或添加)。如果我们需要知道,如果集合的项目已更改,则需要使用自定义实现,例如从此处开始:TrulyObservableCollection

另外,作为@O。 R. Mapper正确地指出,有一种方法可以在不创建派生类型的情况下执行此操作。当ObservableCollection显式实现INotifyPropertyChanged时,您必须将实例强制转换为接口,然后您可以访问接口的属性,事件和方法。所以像这样的东西也能起作用(但老实说这很丑):

ObservableCollection<int> xx = new ObservableCollection<int>();
((INotifyPropertyChanged)xx).PropertyChanged += (s, a) => { };