[Xamarin.Forms] Renderers II: Cambiando las propiedades nativas desde XAML
En el post anterior, aprendimos a modificar características nativas de un control de Xamarin Forms, cambiando el color y el texto de un Switch en su Renderer. En el Renderer de cada plataforma, le asignamos diferentes colores, y en el caso de Android, le asignamos los textos para cuando el Switch está encendido o apagado. Pero si lo que queremos es controlar los valores de esas características nativas desde nuestro proyecto portable, ya sea en XAML o en C#, debemos crear un control personalizado, en este caso que herede de Switch, y crear las propiedades respectivas para cambiar esos valores. En el proyecto portable Creamos una clase que herede de Switch. Yo la llamaré ExtendedSwitch. En ella creamos las propiedades que usaremos para cambiar las nativas de los controles. Para los que usan el patrón MVVM, las propiedades pueden ser usadas como enlace de datos (Bindings), pero para este ejemplo, las cambiaremos en tiempo de ejecución por code-behind, que es un poco más fácil de entender para los que no están familiarizados con MVVM. Las propiedades las llamaré: OnColor, para el color del fondo en iOS y Windows Phone. ThumbColor, para el color del Thumb en iOS y Android. [code language=”csharp” title=”ExtendedSwitch.cs”] public class ExtendedSwitch : Switch { public static readonly BindableProperty OnColorProperty = BindableProperty.Create<ExtendedSwitch, Color>(o => o.OnColor, default(Color)); public Color OnColor { get { return (Color)GetValue(OnColorProperty); } set { SetValue(OnColorProperty, value); } } public static readonly BindableProperty ThumbColorProperty = BindableProperty.Create<ExtendedSwitch, Color>(o => o.ThumbColor, default(Color)); public Color ThumbColor { get { return (Color)GetValue(ThumbColorProperty); } set { SetValue(ThumbColorProperty, value); } } } [/code] Y para usar este control personalizado desde el XAML, agregamos el namespace y ya podemos crearlo y asignarle valores desde ahí: […]