Tirggers en Xamarin Forms

  • xamarin-forms

El uso de triggers en Xamarin Forms permite expresar, en XAML, acciones que cambian la apariencia de controles en función de eventos o cambios en propiedades.

A continuación, se detallan los tipos de triggers que se pueden encontrar/utilizar en Xamarin.

 

Trigger de propiedades

Se produce cuando, en un control, se da un valor determinado a una propiedad.

Por ejemplo, si queremos que un entry tenga un background rojo si no se ha especificado ningún valor. Muy útil cuando se desea mostrar que un entry debe ser informado de manera obligatoria.

<Entry Placeholder="write your name" Text="{Binding Name}">
        <Entry.Triggers>
            <Trigger TargetType="Entry" Property="Text" Value="">
                <Setter Property="BackgroundColor" Value="Red" />
                <Setter Property="PlaceholderColor" Value="White" />
            </Trigger>
        </Entry.Triggers>
</Entry>

En el ejemplo anterior, tenemos un entry con fondo rojo cuando su valor es una cadena vacía, y blanco cuando tiene otro valor.

 

Trigger de datos

Usa enlaces de datos para desencadenar basándose en los propiedades de otro control. Es similar al anterior, pero especificando un binding para el Property del trigger, lo que nos permite relacionar la propiedad del trigger con una propiedad de ViewModel.

Por ejemplo, queremos que un entry esté habilitado solo si ya se ha especificado algún valor en otro entry.

<Entry Placeholder="write your surname" Text="">
        <Entry.Triggers>
            <DataTrigger TargetType="Entry" Binding="{Binding Name}" Value="">
                <Setter Property="IsEnabled" Value="False" />
            </DataTrigger>
        </Entry.Triggers>
</Entry>

En este caso, el Surname estará habilitado solo cuando el Name tenga un valor distinto de vacío.

 

Trigger de eventos

Se produce cuando tiene lugar un evento en el control.

Por ejemplo, cuando se pulse un botón, queremos que se reproduzca una animación que escale el botón y lo devuelva a su tamaño original.

Para ello, es necesario crear un TriggerAction