Xamarin.Forms Data binding

Download Sample Scaricare l'esempio

Il data binding è la tecnica che consente di collegare le proprietà di due oggetti in modo che le modifiche apportate a una proprietà vengano automaticamente riflesse nell'altra proprietà. Il data binding è parte integrante dell'architettura dell'applicazione Model-View-ViewModel (MVVM).

Il problema del collegamento dei dati

Un'applicazione Xamarin.Forms è costituita da una o più pagine, ognuna delle quali contiene in genere più oggetti dell'interfaccia utente denominati visualizzazioni. Una delle attività principali del programma consiste nel mantenere sincronizzate le viste e tenere traccia dei diversi valori o selezioni che rappresentano. Spesso le viste rappresentano i valori di un'origine dati sottostante e l'utente effettua operazioni sulle viste per modificare i dati. Quando una vista viene modificata, i dati sottostanti devono riflettere la modifica e, in modo analogo, quando i dati sottostanti cambiano, la modifica deve essere riflessa nella vista.

Per gestire correttamente il processo, è necessario segnalare al programma le modifiche apportate nelle viste o nei dati sottostanti. La soluzione comune consiste nel definire gli eventi che segnalano quando si verifica una modifica. Si può quindi installare un gestore dell'evento che riceve le notifiche relative alle modifiche. Il gestore risponde trasferendo i dati da un oggetto a un altro. Tuttavia, se sono presenti molte viste, è necessario usare anche molti gestori degli eventi ed è richiesta una grande quantità di codice.

La soluzione offerta dal data binding

Il data binding consente di automatizzare questo processo ed elimina la necessità di usare gestori degli eventi. I data binding possono essere implementati nel codice o in XAML, ma sono molto più comuni in XAML dove contribuiscono alla riduzione delle dimensioni del file code-behind. Sostituendo il codice procedurale nei gestori degli eventi con codice dichiarativo o markup, l'applicazione diventa più semplice e chiara.

Uno dei due oggetti coinvolti in un data binding è quasi sempre un elemento che deriva da View e fa parte dell'interfaccia visiva di una pagina. L'altro oggetto può essere:

  • Un altro oggetto View derivato, in genere nella stessa pagina.
  • Un oggetto in un file di codice.

Nei programmi di dimostrazione, ad esempio quelli dell'esempio DataBindingDemos, i data binding tra due View derivati vengono spesso visualizzati per motivi di semplicità e chiarezza. Tuttavia, gli stessi principi possono essere applicati ai data binding tra un oggetto View e altri oggetti. Quando un'applicazione viene compilata usando l'architettura MVVM (Model-View-ViewModel), la classe con dati sottostanti viene spesso definita modello di visualizzazione.

I data binding sono illustrati nelle seguenti serie di articoli:

Binding di base

Informazioni sulla differenza tra l'origine e la destinazione del data binding con esempi di data binding semplici nel codice e in XAML.

Modalità di binding

Illustra in che modo la modalità di binding può controllare il flusso di dati tra i due oggetti.

Formattazione delle stringhe

Usare un data binding per formattare e visualizzare gli oggetti come stringhe.

Percorso di binding

Informazioni dettagliate sulla proprietà Path del data binding per l'accesso a proprietà secondarie e ai membri della raccolta.

Convertitori di valori per i binding

Usare i convertitori di valori dei binding per modificare i valori all'interno del data binding.

Binding relativi

Utilizzare associazioni relative per impostare l'origine dell'associazione in relazione alla posizione della destinazione dell'associazione.

Fallback di binding

Per rendere più solidi i data binding, definire i valori di fallback da usare se il processo di binding ha esito negativo.

Associazioni multi-binding

Collegare una raccolta di oggetti a una singola proprietà di destinazione di Binding associazione.

Interfaccia di comando

Implementare la proprietà Command con i data binding.

Binding compilati

Usare binding compilati per migliorare le prestazioni del data binding.