ObservableCollection
реализует как INotifyCollectionChanged
, так и INotifyPropertyChanged
.
INotifyPropertyChanged
используется для указания того, что свойство ObservableCollection
изменилось, например, число его элементов ("Count"
) или элемент, доступный через индексатор коллекции ("Item[]"
). Кроме того, ObservableCollection
реализует INotifyCollectionChanged
, чтобы указать, какой именно элемент изменился и как.
Взгляните на реализацию Mono ObservableCollection
, чтобы увидеть, что именно делает ObservableCollection
. Например, вот метод InsertItem
:
protected override void InsertItem (int index, T item)
{
CheckReentrancy ();
base.InsertItem (index, item);
OnCollectionChanged (new NotifyCollectionChangedEventArgs (
NotifyCollectionChangedAction.Add, item, index));
OnPropertyChanged (new PropertyChangedEventArgs ("Count"));
OnPropertyChanged (new PropertyChangedEventArgs ("Item[]"));
}
Если вы хотите реализовать свой собственный ObservableCollection
-подобный класс коллекции, кажется, что это правильный способ для реализации INotifyCollectionChanged
и INotifyPropertyChanged
.