Enlace de datos de Xamarin.FormsXamarin.Forms Data Binding

Descargar ejemplo Descargar el ejemploDownload Sample Download the sample

El enlace de datos es la técnica que consiste en vincular las propiedades de dos objetos para que los cambios en una propiedad se reflejen automáticamente en la otra propiedad. El enlace de datos es una parte integral de la arquitectura de aplicación 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.

El problema de vinculación de datosThe Data Linking Problem

Una aplicación de Xamarin.Forms consta de una o varias páginas, cada una de los cuales generalmente contiene varios objetos de interfaz de usuario denominados vistas.A Xamarin.Forms application consists of one or more pages, each of which generally contains multiple user-interface objects called views. Una de las tareas principales del programa consiste en mantener estas vistas sincronizadas y realizar un seguimiento de los distintos valores o selecciones que representan.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. A menudo las vistas representan valores de un origen de datos subyacente y el usuario manipula estas vistas para cambiar esos datos.Often the views represent values from an underlying data source, and the user manipulates these views to change that data. Cuando la vista cambia, los datos subyacentes deben reflejar ese cambio y, de forma similar, cuando los datos subyacentes cambian, ese cambio debe reflejarse en la 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.

Para controlar este trabajo correctamente, el programa debe recibir una notificación de cambios en estas vistas o en los datos subyacentes.To handle this job successfully, the program must be notified of changes in these views or the underlying data. La solución habitual consiste en definir eventos que indican cuándo se produce un cambio.The common solution is to define events that signal when a change occurs. Después, se puede instalar un controlador de eventos que recibe la notificación de estos cambios,An event handler can then be installed that is notified of these changes. y responde transfiriendo datos de un objeto a otro.It responds by transferring data from one object to another. Pero cuando hay muchas vistas, también es necesario que haya muchos controladores de eventos y se involucra una gran cantidad de código.However, when there are many views, there must also be many event handlers, and a lot of code gets involved.

La solución de enlace de datosThe Data Binding Solution

El enlace de datos automatiza este trabajo y vuelve innecesarios los controladores de eventos.Data binding automates this job, and renders the event handlers unnecessary. (pero los eventos siguen siendo necesarios porque la infraestructura de enlace de datos los usa). Los enlaces de datos se pueden implementar en el código o en XAML, pero son mucho más comunes en XAML, ya que así es más fácil reducir el tamaño del archivo de código subyacente.(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. Al reemplazar el código de procedimientos en los controladores de eventos con código declarativo o marcado, se simplifica y se aclara la aplicación.By replacing procedural code in event handlers with declarative code or markup, the application is simplified and clarified.

Uno de los dos objetos implicados en un enlace de datos es casi siempre un elemento que se deriva de View y forma parte de la interfaz visual de una página.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. El otro objeto puede ser:The other object is either:

  • Otro derivado de View, normalmente en la misma página.Another View derivative, usually on the same page.
  • Un objeto en un archivo de código.An object in a code file.

En los programas de demo, como los del ejemplo DataBindingDemos, los enlaces de datos entre dos derivados de View a menudo se muestran con fines de claridad y simplicidad.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. Pero se pueden aplicar los mismos principios a los enlaces de datos entre un View y otros objetos.However, the same principles can be applied to data bindings between a View and other objects. Cuando se compila una aplicación con la arquitectura Model-View-ViewModel (MVVM), la clase con los datos subyacentes a menudo se denomina ViewModel.When an application is built using the Model-View-ViewModel (MVVM) architecture, the class with underlying data is often called a ViewModel.

En los siguientes artículos se abordan los enlaces de datos:Data bindings are explored in the following series of articles:

Enlaces básicosBasic Bindings

Conozca la diferencia entre el origen y el destino del enlace de datos y vea enlaces de datos sencillos en código y en XAML.Learn the difference between the data binding target and source, and see simple data bindings in code and XAML.

Modo de enlaceBinding Mode

Descubra cómo el modo de enlace puede controlar el flujo de datos entre los dos objetos.Discover how the binding mode can control the flow of data between the two objects.

Formato de cadenaString Formatting

Use un enlace de datos para dar formato y mostrar objetos como cadenas.Use a data binding to format and display objects as strings.

Enlace de ruta de accesoBinding Path

Profundice en la propiedad Path del enlace de datos para acceder a las subpropiedades y los miembros de la colección.Dive deeper into the Path property of the data binding to access sub-properties and collection members.

Enlace de convertidores de valoresBinding Value Converters

Use convertidores de valor de enlace para modificar valores en el enlace de datos.Use binding value converters to alter values within the data binding.

Conmutación por recuperación de enlacesBinding Fallbacks

Fortalezca los enlaces de datos mediante la definición de valores de reserva para usarlos si se produce un error en el proceso de enlace.Make data bindings more robust by defining fallback values to use if the binding process fails.

Interfaz de comandosThe Command Interface

Implemente la propiedad Command con los enlaces de datos.Implement the Command property with data bindings.

Enlaces compiladosCompiled Bindings

Use enlaces compilados para mejorar el rendimiento del enlace de datos.Use compiled bindings to improve data binding performance.