Xamarin.Forms Interruptor

Baixar exemplo Baixar o exemplo

O Xamarin.FormsSwitch controle é um botão de alternância horizontal que pode ser manipulado pelo usuário para alternar entre estados ativados e desativados, que são representados por um boolean valor. A classe Switch herda de View.

As capturas de tela a seguir mostram um Switch controle em seus estados de alternância ativados e desativados no iOS e no Android:

Captura de tela de Opções em estados de ativação e desativação, em comutadores iOS e Android

O Switch controle define as seguintes propriedades:

  • IsToggled é um boolean valor que indica se o Switch está ativado.
  • OnColor é um Color que afeta como o Switch é renderizado no estado alternado ou ativado.
  • ThumbColor é o Color do polegar do comutador.

Essas propriedades são apoiadas por um BindableProperty objeto , o que significa que o Switch pode ser estilizado e ser o destino de associações de dados.

O Switch controle define um Toggled evento que é acionado quando a IsToggled propriedade é alterada, seja por meio da manipulação do usuário ou quando um aplicativo define a IsToggled propriedade. O ToggledEventArgs objeto que acompanha o Toggled evento tem uma única propriedade chamada Value, do tipo bool. Quando o evento é acionado, o valor da Value propriedade reflete o novo valor da IsToggled propriedade.

Criar uma opção

Um Switch pode ser instanciado em XAML. Sua IsToggled propriedade pode ser definida para alternar o Switch. Por padrão, a IsToggled propriedade é false. O exemplo a seguir mostra como instanciar um Switch em XAML com o conjunto de propriedades opcional IsToggled :

<Switch IsToggled="true"/>

Um Switch também pode ser criado no código:

Switch switchControl = new Switch { IsToggled = true };

Alternar aparência

Além das propriedades que Switch herdam da View classe , Switch também define OnColor as propriedades e ThumbColor . A OnColor propriedade pode ser definida para definir a Switch cor quando ela é alternada para seu estado ativado , e a ThumbColor propriedade pode ser definida para definir o Color do polegar do comutador. O exemplo a seguir mostra como instanciar um Switch em XAML com estas propriedades definidas:

<Switch OnColor="Orange"
        ThumbColor="Green" />

As propriedades também podem ser definidas ao criar um Switch no código:

Switch switch = new Switch { OnColor = Color.Orange, ThumbColor = Color.Green };

A captura de tela a seguir mostra o Switch em seus estados de alternância ativado e desativado , com as OnColor propriedades e ThumbColor definidas:

Captura de tela de Ativar e desativar estados no iOS e no Android com as cores alteradas.

Responder a uma alteração de estado de comutador

Quando a IsToggled propriedade é alterada, por meio da manipulação do usuário ou quando um aplicativo define a IsToggled propriedade, o evento é acionado Toggled . Um manipulador de eventos para esse evento pode ser registrado para responder à alteração:

<Switch Toggled="OnToggled" />

O arquivo code-behind contém o manipulador para o Toggled evento:

void OnToggled(object sender, ToggledEventArgs e)
{
    // Perform an action after examining e.Value
}

O sender argumento no manipulador de eventos é o Switch responsável por disparar esse evento. Você pode usar a sender propriedade para acessar o Switch objeto ou para distinguir entre vários Switch objetos que compartilham o mesmo Toggled manipulador de eventos.

O Toggled manipulador de eventos também pode ser atribuído no código:

Switch switchControl = new Switch {...};
switchControl.Toggled += (sender, e) =>
{
    // Perform an action after examining e.Value
}

Associação de dados a um comutador

O Toggled manipulador de eventos pode ser eliminado usando associação de dados e gatilhos para responder a uma Switch alteração dos estados de alternância.

<Switch x:Name="styleSwitch" />
<Label Text="Lorem ipsum dolor sit amet, elit rutrum, enim hendrerit augue vitae praesent sed non, lorem aenean quis praesent pede.">
    <Label.Triggers>
        <DataTrigger TargetType="Label"
                     Binding="{Binding Source={x:Reference styleSwitch}, Path=IsToggled}"
                     Value="true">
            <Setter Property="FontAttributes"
                    Value="Italic, Bold" />
            <Setter Property="FontSize"
                    Value="Large" />
        </DataTrigger>
    </Label.Triggers>
</Label>

Neste exemplo, o Label usa uma expressão de associação em um DataTrigger para monitorar a IsToggled propriedade do Switch chamado styleSwitch. Quando essa propriedade se torna true, as FontAttributes propriedades e FontSize do Label são alteradas. Quando a IsToggled propriedade retorna para false, as FontAttributes propriedades e FontSize do Label são redefinidas para seu estado inicial.

Para obter informações sobre gatilhos, consulte Xamarin.Forms Gatilhos.

Alternar estados visuais

Switch tem On e Off estados visuais que podem ser usados para iniciar uma alteração visual quando a IsToggled propriedade é alterada.

O exemplo XAML a seguir mostra como definir estados visuais para os On estados e Off :

<Switch IsToggled="True">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualState x:Name="On">
                <VisualState.Setters>
                    <Setter Property="ThumbColor"
                            Value="MediumSpringGreen" />
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="Off">
                <VisualState.Setters>
                    <Setter Property="ThumbColor"
                            Value="Red" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</Switch>

Neste exemplo, o OnVisualState especifica que, quando a IsToggled propriedade for true, a ThumbColor propriedade será definida como verde de mola médio. O OffVisualState especifica que, quando a IsToggled propriedade for false, a ThumbColor propriedade será definida como vermelho. Portanto, o efeito geral é que quando o Switch está em uma posição off seu polegar é vermelho, e seu polegar é verde de mola média quando o Switch está em uma posição on:

Captura de tela do Switch on VisualState, on iOS and AndroidScreenshot of Switch off VisualState, on iOS and Android

Para obter mais informações sobre estados visuais, consulte Xamarin.Forms Visual State Manager.

Desabilitar uma opção

Um aplicativo pode entrar em um estado em que o Switch que está sendo alternado não é uma operação válida. Nesses casos, o Switch pode ser desabilitado definindo sua IsEnabled propriedade falsecomo . Isso impedirá que os usuários possam manipular o Switch.