Entendiendo Multi-Binding en Xamarin Forms

Multi-Binding es una gran funcionalidad que fue introducida en Xamarin Forms 4.7, la cual nos permite conectar (bindear) multiples elementos a una propiedad. Esto nos da mucha flexibilidad, ya que ya no necesitamos crear múltiples elementos de UI para conectar cada Bindable Property, lo que mejora el rendimiento de nuestra aplicación y hace que nuestro código sea más limpio.

¿Por qué es importante?

Pero, ¿Qué pasa cuando queriamos conseguir lo mismo por ejemplo con Botones? No hay ninguna propiedad FormattedText que podamos usar. ¡MULTI-BINDING AL RESCATE!

¿Cómo lo uso?

En nuestro XAML agreguemos la etiqueta MultiBinding a cualquier propiedad que queramos, luego especificamos el formato usando StringFormat y agregando un {} para escapar de la secuencia, y por ultimo agregamos las propiedades usando {[sequenceNumber]} para cada propiedad.

Ej.

Resultado:

Por cada Binding, también se puede especificar un Converter, TargetNullValue, FallbackValue, TargetNullValue, etc

¿Cómo lo uso con Converters?

Hay dos maneras de hacerlo:

  • Agrégandolo a la propiedad Multi-Binding
  • Agrégandolo a cada Binding

Agrégandolo a la propiedad Multi-Binding

Por ejemplo, creemos un converter que dependiendo del nombre completo y un parámetro nos permita saber si esa persona es nuestro primo o no.

Como puedes ver, dado que estamos convirtiendo un Multi-Binding a un solo elemento, nuestro convertidor es un pooco diferente. En lugar de extender de IValueConverter, extendemos de IMultiValueConverter y recibimos un arreglo de objetos con todos los Bindings especificados en el XAML.

Para usarlo:

Con este enfoque, es bastante fácil mostrar/ocultar elements basado en múltiples propiedades, por ejemplo:

Mira este ejemplo completo aquí.

Agrégandolo a cada Binding

Por ejemplo, apliquemos TextToUpper al primer nombre y TextToLower al segundo nombre:

¿Cómo usarlo con propiedades estáticas?

Eso es todo por ahora, puede consultar el código fuente completo aquí.

Happy coding!

Co-Founder of CrossGeeks. Currently Xamarin Certified Developer and Microsoft MVP.

Co-Founder of CrossGeeks. Currently Xamarin Certified Developer and Microsoft MVP.