Question

je raison pour envelopper une instance de ObservableCollection<T> dans un autre type.

Je suis mise en œuvre dans mon ICollection<T> nouveau type. C'est simple. Je met également en œuvre INotifyCollectionChanged, ce qui signifie la mise en œuvre

public event NotifyCollectionChangedEventHandler CollectionChanged;

Le meilleur chemin que je peux penser à mettre en œuvre est de placer un code supplémentaire dans ma mise en œuvre de ICollection<T>, comme ceci:

public void Add(T item)
{
    Collection.Add(item);
    if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}

(Collection est l'instance de ObservableCollection<T> que je suis emballage).

Y at-il un moyen de tirer parti de la mise en œuvre de cette collection INotifyCollectionChanged offre, plutôt que de re-mise en œuvre de moi-même?

Était-ce utile?

La solution

Oui. Lorsque vous attribuez la valeur de votre propriété Collection ou sur le terrain, manche son événement CollectionChanged:

Collection = new ObservableCollection<T>();
Collection.CollectionChanged += this.HandleCollectionChanged;

Ensuite, dans la méthode HandleCollectionChanged, vous soulevez propre événement CollectionChanged de l'objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top