Compartilhar via


Xamarin.Forms Interruptor

O Xamarin.FormsSwitch controle é um botão de alternância horizontal que pode ser manipulado pelo usuário para alternar entre os estados de ativação e desativação, 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 de ativação e desativação no iOS e Android:

Captura de tela de Switches nos estados de ligar e desligar, no 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 polegar do interruptor.

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, 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 um Switch

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

<Switch IsToggled="true"/>

A Switch também pode ser criado em código:

Switch switchControl = new Switch { IsToggled = true };

Mudar de aparência

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

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

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

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

A captura de tela a seguir mostra os Switch estados de alternância ativa e desativada, com as OnColor propriedades e ThumbColor definidas:

Captura de tela de Switches nos estados on e off, no iOS e Android com as cores alteradas.

Responder a uma alteração de estado do Switch

Quando a IsToggled propriedade é alterada, por meio da manipulação do usuário ou quando um aplicativo define a IsToggled propriedade, o Toggled evento é acionado. 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
}

Vincular dados a um Switch

O Toggled manipulador de eventos pode ser eliminado usando vinculação de dados e gatilhos para responder a uma Switch mudança de 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 vinculação em um DataTrigger para monitorar a IsToggled propriedade do Switch nome 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 Triggers.

Estados visuais Switch

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 primavera média. 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 primavera média quando o Switch está em uma posição on:

Captura de tela do Switch on VisualState, no iOS e AndroidCaptura de tela de Desativar o VisualState no iOS e Android

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

Desativar um comutador

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