What is the purpose of ObservableCollection raising a PropertyChange of "Item[]"?
Is this something I should be doing if I have a class that implements INotifyCollectionChanged?
Do WPF controls use this PropertyChange of "Item[]" somehow?
ObservableCollection
implements both INotifyCollectionChanged
and INotifyPropertyChanged
.
INotifyPropertyChanged
is used to indicate that a property of the ObservableCollection
has changed, like the number of its elements ("Count"
) or an element accessible through the collection's indexer ("Item[]"
). Additionally, ObservableCollection
implements INotifyCollectionChanged
to indicate which element has changed exactly and how.
Have a look at the Mono implementation of ObservableCollection
to see what the ObservableCollection
does exactly. For example, here is the InsertItem
method:
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[]"));
}
If you want to implement your own ObservableCollection
-like collection class, it seems the proper way to implement both INotifyCollectionChanged
and INotifyPropertyChanged
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With