PropertyChanged
является protected event
, поэтому он не доступен из кода. Как вы точно знаете, protected
означает, что он доступен только от самого себя и от производных классов.
Когда дело доходит до ObservableCollection
, у нас есть событие CollectionChanged
, чтобы знать, когда изменения коллекции (элемент был удален или добавлен). Если нам нужно знать, если элемент коллекции был изменен, вам нужно использовать пользовательскую реализацию, например, отсюда: TrulyObservableCollection
Также, как @O. R. Mapper правильно указал, что есть способ сделать это, не создавая производный тип. Поскольку ObservableCollection
реализует INotifyPropertyChanged
явно, вы должны указать экземпляр на интерфейс, а затем вы можете получить доступ к свойствам, событиям и методам интерфейса. Так что что-то подобное работает (но это некрасиво, если честно):
ObservableCollection<int> xx = new ObservableCollection<int>();
((INotifyPropertyChanged)xx).PropertyChanged += (s, a) => { };
ObservableCollection предназначен для мониторинга коллекций INotifyPropertyChanged для свойств. –