Je jetais un coup d'oeil au code ObservableCollection (grâce à l'awsome .NET Reflector) et j'ai été surpris de constater que les méthodes Add et Remove ne sont pas remplacées. Comment alors ObservableCollection déclenche-t-il l'événement PropertyChanged ou CollectionChanged pour notifier quand quelque chose est ajouté ou supprimé?Comment fonctionne ObservableCollection?
0
A
Répondre
2
Il remplace un groupe de méthodes protégées de la classe de base de la collection <T>, par ex. InsertItem (int index, point T), RemoveItem (int index), etc.
Ces overrides soulèvent spécifiquement les événements:
protected override void InsertItem(int index, T item)
{
this.CheckReentrancy();
base.InsertItem(index, item);
this.OnPropertyChanged("Count");
this.OnPropertyChanged("Item[]");
this.OnCollectionChanged(NotifyCollectionChangedAction.Add, item, index);
}
DUH! Merci. J'ai remarqué que Collections.InsertItem a été substitué mais j'ai échoué à vérifier que la méthode base.Add a appelé la méthode InsertItem virtuelle. – Fragilerus