Data binding di Xamarin.FormsXamarin.Forms Data Binding

Scaricare esempio Scaricare l'esempioDownload Sample Download the sample

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).Data binding is the technique of linking properties of two objects so that changes in one property are automatically reflected in the other property. Data binding is an integral part of the Model-View-ViewModel (MVVM) application architecture.

Il problema del collegamento dei datiThe Data Linking Problem

Un'applicazione Xamarin.Forms è costituita da una o più pagine, ognuna delle quali in genere contiene più oggetti dell'interfaccia utente denominati viste.A Xamarin.Forms application consists of one or more pages, each of which generally contains multiple user-interface objects called views. Una delle attività principali del programma consiste nel mantenere sincronizzate le viste e tenere traccia dei diversi valori o selezioni che rappresentano.One of the primary tasks of the program is to keep these views synchronized, and to keep track of the various values or selections that they represent. Spesso le viste rappresentano i valori di un'origine dati sottostante e l'utente effettua operazioni sulle viste per modificare i dati.Often the views represent values from an underlying data source, and the user manipulates these views to change that data. 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.When the view changes, the underlying data must reflect that change, and similarly, when the underlying data changes, that change must be reflected in the view.

Per gestire correttamente il processo, è necessario segnalare al programma le modifiche apportate nelle viste o nei dati sottostanti.To handle this job successfully, the program must be notified of changes in these views or the underlying data. La soluzione comune consiste nel definire gli eventi che segnalano quando si verifica una modifica.The common solution is to define events that signal when a change occurs. Si può quindi installare un gestore dell'evento che riceve le notifiche relative alle modifiche.An event handler can then be installed that is notified of these changes. Il gestore risponde trasferendo i dati da un oggetto a un altro.It responds by transferring data from one object to another. Tuttavia, se sono presenti molte viste, è necessario usare anche molti gestori degli eventi ed è richiesta una grande quantità di codice.However, when there are many views, there must also be many event handlers, and a lot of code gets involved.

La soluzione offerta dal data bindingThe Data Binding Solution

Il data binding consente di automatizzare questo processo ed elimina la necessità di usare gestori degli eventi.Data binding automates this job, and renders the event handlers unnecessary. Gli eventi tuttavia continuano a essere necessari, perché vengono usati dall'infrastruttura di data binding. 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.(The events are still necessary, however, because the data-binding infrastructure uses them.) Data bindings can be implemented either in code or in XAML, but they are much more common in XAML where they help to reduce the size of the code-behind file. Sostituendo il codice procedurale nei gestori degli eventi con codice dichiarativo o markup, l'applicazione diventa più semplice e chiara.By replacing procedural code in event handlers with declarative code or markup, the application is simplified and clarified.

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.One of the two objects involved in a data binding is almost always an element that derives from View and forms part of the visual interface of a page. L'altro oggetto può essere:The other object is either:

  • Un altro oggetto View derivato, in genere nella stessa pagina.Another View derivative, usually on the same page.
  • Un oggetto in un file di codice.An object in a code file.

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.In demonstration programs such as those in the DataBindingDemos sample, data bindings between two View derivatives are often shown for purposes of clarity and simplicity. Tuttavia, gli stessi principi possono essere applicati ai data binding tra un oggetto View e altri oggetti.However, the same principles can be applied to data bindings between a View and other objects. Se un'applicazione viene compilata usando l'architettura Model-View-ViewModel (MVVM), la classe con dati sottostanti è spesso definita ViewModel.When an application is built using the Model-View-ViewModel (MVVM) architecture, the class with underlying data is often called a ViewModel.

I data binding sono illustrati nelle seguenti serie di articoli:Data bindings are explored in the following series of articles:

Binding di baseBasic Bindings

Informazioni sulla differenza tra l'origine e la destinazione del data binding con esempi di data binding semplici nel codice e in XAML.Learn the difference between the data binding target and source, and see simple data bindings in code and XAML.

Modalità di bindingBinding Mode

Illustra in che modo la modalità di binding può controllare il flusso di dati tra i due oggetti.Discover how the binding mode can control the flow of data between the two objects.

Formattazione delle stringheString Formatting

Usare un data binding per formattare e visualizzare gli oggetti come stringhe.Use a data binding to format and display objects as strings.

Percorso di bindingBinding Path

Informazioni dettagliate sulla proprietà Path del data binding per l'accesso a proprietà secondarie e ai membri della raccolta.Dive deeper into the Path property of the data binding to access sub-properties and collection members.

Convertitori di valori per i bindingBinding Value Converters

Usare i convertitori di valori dei binding per modificare i valori all'interno del data binding.Use binding value converters to alter values within the data binding.

Fallback di bindingBinding Fallbacks

Per rendere più solidi i data binding, definire i valori di fallback da usare se il processo di binding ha esito negativo.Make data bindings more robust by defining fallback values to use if the binding process fails.

Interfaccia di comandoThe Command Interface

Implementare la proprietà Command con i data binding.Implement the Command property with data bindings.

Binding compilatiCompiled Bindings

Usare binding compilati per migliorare le prestazioni del data binding.Use compiled bindings to improve data binding performance.