Wrapping ObservableCollection in C #
-
27-10-2019 - |
Domanda
ho ragione per avvolgere un'istanza di ObservableCollection<T>
in un altro tipo.
sto implementando ICollection<T>
nel mio nuovo tipo. Questo è semplice. Sto anche attuare INotifyCollectionChanged
, il che significa attuazione
public event NotifyCollectionChangedEventHandler CollectionChanged;
Il percorso migliore che posso pensare di implementare questo è quello di mettere un codice aggiuntivo nel mio attuazione ICollection<T>
, in questo modo:
public void Add(T item)
{
Collection.Add(item);
if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}
(Collection è l'istanza di ObservableCollection<T>
che io sono avvolgimento).
C'è un modo per sfruttare l'attuazione di INotifyCollectionChanged
che fornisce Collection, piuttosto che ri-attuazione da solo?
Soluzione
Sì. Quando si assegna il valore della vostra proprietà Collection
o di un campo, maniglia la sua evento CollectionChanged:
Collection = new ObservableCollection<T>();
Collection.CollectionChanged += this.HandleCollectionChanged;
Poi nel metodo HandleCollectionChanged, si alza proprio evento CollectionChanged dell'oggetto.