Emballage ObservableCollection en C #
-
27-10-2019 - |
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?
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.