Nello script #17 si è visto come rendere una classe utilizzabile nel Binding di WPF implementando l'interfaccia INotifyPropertyChanged.
In modo analogo può essere anche utile caricare collezione di dati attraverso controlli di elenco e si rende perciò necessario poter notificare questi controlli al variare degli elementi presenti nella collezione. Per farlo occorre implementare l'interfaccia System.Collections.Specialized.INotifyCollectionChanged, definita nell'assembly WindowsBase così definita:
public interface INotifyCollectionChanged
{
event NotifyCollectionChangedEventHandler CollectionChanged;
}Il singolo evento notifica tramite l'argomento NotifyCollectionChangedEventArgs gli items rimossi, quelli aggiunti e l'azione che li ha coinvolti. L'implementazione è specifica, ovviamente, della propria collezione, ma se si stanno sviluppando classi ad hoc per l'interfaccia WPF può venire utile l'utilizzo del tipo ObservableCollection<T> che eredita da Collection<T> e implementa già tale interfaccia, fornendo inoltre una tipizzazione degli elementi. Ponendo un'ipotetica classe MyEntity, ecco la semplice definizione della collezione:
using System.Collections.ObjectModel;
public class MyEntityCollection :
ObservableCollection<MyEntity> {
}
Qualora si modifichi la collezione da thread diversi dal dispatcher, occorre prestare attenzione che le CollectionView generano un errore nel ricevere le notifiche. Bisogna quindi garantire la chiamata eventualmente sovrascrivendo i metodi OnPropertyChanged e OnCollectionChanged, invocandoli sempre sul Dispatcher.
Per approfondimenti sul caricamento delle liste si veda:
I controlli di elenco presenti in WPF
http://www.winfxitalia.com/articoli/presentation-foundation/controlli-elenco-WPF.aspx
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
