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
https://www.winfxitalia.com/articoli/presentation-foundation/controlli-elenco-WPF.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Change tracking e composition in Entity Framework
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
I più letti di oggi
- Utilizzare WebJobs su Linux con Azure App Service
- Le novità di C#6 e Visual Studio 2015
- domani su @aspitalia troverete un articolo speciale dedicato a Windows Phone 8: non ... https://aspit.co/wp-summit #WPSummit
- chiudiamo con @GentiliMoreno: autenticazione e autorizzazione per #asp.netmvc e #webapi con #owin: https://aspit.co/web14-live #aspilive