2010-08-26 9 views
0

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?

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); 
} 
+0

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