Creación de controles personalizados

Clase 28 de 52Curso de Xamarin.Forms

Resumen

El corazón de Xamarin.Forms son los Renderers, que son los que permiten convertir las etiquetas de diseño de controles en XAML a componentes de código nativo en cada plataformay. Cada control disponible en cada una de las APIs del proyecto: Xamarin.Android, Xamarin.iOS, Xamarin.WUF, etc., tienen sus respectivos renderers que dibujan cada control en su forma nativa para cada plataforma.

Así por ejemplo, un control XAML de tipo <Entry /> se va a renderizar de la siguiente manera:

  • En Android: como un componente EditText
  • En iOS: como un componente UITextView
  • En WUF: como un TextBox
    etc.

Para crear Controles Personalizados, no sólo tenemos que crear el control en Xamarin.Forms usando .NET Standard sino también tenemos que crear su renderer para la plataforma destino.

Para crear el control personalizado:

  • Se declara la clase del control en C#, heredando una clase base de Xamarin.Forms
  • Se identifican las propiedades enlazables que se van a asociar luego con los valores del componente nativo
  • Se crean las BindableProperties con su respectiva fachada CLR de la propiedad enlazable, con los accesores get y set.
  • Crear el renderer en el folder de la plataforma respectiva
  • Descargamos el paquete NuGet específico para el componente nativo que queremos implementar
  • En el renderer se asocian el control de Xamarin.Forms y el control nativo expuesto por el paquete NuGet
  • Se programa el override para cada método / evento que queremos enlazar entre los controles
  • Se indica SetNativeControl()
  • Se crea el método OnElementProperyChanged() para enlazar los eventos asociados al cambio de valores
  • Se exporta el renderer.

Y ya se puede usar el nuevo control en la interfaz de la aplicación usando Xaml.