Data Binding en WPF

0
2328

El Enlace de Datos o Data Binding, es una de las características más poderosas de WPF. Básicamente, permite establecer de una forma simple, la conexión entre las propiedades de un objeto Origen y un objeto Destino, con el objetivo de que sus valores permanezcan sincronizados.

Data Binding

De esta forma, el objeto destino será notificado cuando las propiedades del objeto origen cambien su valor, o viceversa. Gracias a este canal de comunicación, los cambios se ven reflejados automáticamente.

Esta funcionalidad, presenta las siguientes ventajas con respecto a los métodos tradicionales de programación:

  • Un número mayor de propiedades de elementos WPF implementan Data Binding.
  • Menos código de programación.
  • Flexibilidad al momento de interactuar con el usuario (validación, conversión, formateo, etc.)
  • Separación bien definida de la lógica del negocio de la interfaz de usuario, lo que permite implementar patrones como MVVM.

Componentes del Enlace de Datos

La clase que permite el enlace de datos es la System.Windows.Data.Binding, y por lo general tiene mínimo cuatro partes:

  1. Un objeto origen: Que hace referencia al objeto de donde se obtienen los datos. Por lo general es una clase o entidad de la lógica del negocio, sin embargo, puede también ser una lista, un objeto ADO.NET, un control, o cualquier objeto CLR. El nombre del objeto origen se lo especifica en el objeto destino mediante la propiedad ElemenName, de la clase Binding.
  2. Un objeto destino: Que debe ser del tipo DependencyObject, y por lo general es un control WPF. Puesto que todos los controles heredan de la clase UIElement y esta a su vez de DependencyObject, los mismos aplican perfectamente como destino del enlace.
  3. Una propiedad destino: Que debe ser una Propiedad de Dependencia o DependencyProperty. La mayoría de las propiedades UIElement son DependencyProperty, y solo los objetos DependencyObject pueden definir propiedades de dependencia.
  4. Una ruta: Que representa el valor o la propiedad del objeto origen que se va a enlazar. Se la especifica en el objeto destino mediante la propiedad Path de la clase Binding.

Ejemplo

En el siguiente ejemplo tenemos un control TextBlock (Objeto Destino) enlazado a un control TextBox (Objeto Origen), cuya propiedad a sincronizar es la Text.

<StackPanel Margin="6">
   <TextBox Name="ObjetoOrigen" />
   <TextBlock Name="ObjetoDestino"
              Text="{Binding ElementName=ObjetoOrigen, Path=Text}" />
</StackPanel>

El resultado de este ejemplo básico es que todo texto que se ingrese en el TextBox (Objeto origen), se verá reflejado en el TextBlock (Objeto destino).