Compartilhar via


Xamarin.Forms Caixa de seleção

O Xamarin.FormsCheckBox é um tipo de botão que pode ser marcado ou vazio. Quando uma caixa de seleção é marcada, ela é considerada ativada. Quando uma caixa de seleção está vazia, ela é considerada desativada.

CheckBox Define uma bool propriedade chamada IsChecked, que indica se o CheckBox está marcado. Essa propriedade também é apoiada por um BindableProperty objeto, o que significa que ele pode ser estilizado e ser o destino de associações de dados.

Observação

A IsChecked propriedade bindable tem um modo de vinculação padrão de BindingMode.TwoWay.

CheckBox Define um CheckedChanged evento que é acionado quando a IsChecked propriedade é alterada, por meio da manipulação do usuário ou quando um aplicativo define a IsChecked propriedade. O CheckedChangedEventArgs objeto que acompanha o CheckedChanged evento tem uma única propriedade chamada Value, do tipo bool. Quando o evento é acionado, o Value valor da propriedade é definido como o novo valor da IsChecked propriedade.

Criar uma caixa de seleção

O exemplo a seguir mostra como instanciar um CheckBox em XAML:

<CheckBox />

Esse XAML resulta na aparência mostrada nas seguintes capturas de tela:

Captura de tela de uma caixa de seleção vazia, no iOS e Android

Por padrão, o CheckBox está vazio. O CheckBox pode ser verificado pela manipulação do usuário ou definindo a IsChecked propriedade como true:

<CheckBox IsChecked="true" />

Esse XAML resulta na aparência mostrada nas seguintes capturas de tela:

Captura de tela de uma caixa de seleção marcada, no iOS e Android

Alternativamente, um CheckBox pode ser criado no código:

CheckBox checkBox = new CheckBox { IsChecked = true };

Responder a uma caixa de seleção alterando o estado

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

<CheckBox CheckedChanged="OnCheckBoxCheckedChanged" />

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

void OnCheckBoxCheckedChanged(object sender, CheckedChangedEventArgs e)
{
    // Perform required operation after examining e.Value
}

O sender argumento é o CheckBox responsável por esse evento. Você pode usar isso para acessar o CheckBox objeto ou para distinguir entre vários CheckBox objetos que compartilham o mesmo CheckedChanged manipulador de eventos.

Como alternativa, um manipulador de eventos para o CheckedChanged evento pode ser registrado no código:

CheckBox checkBox = new CheckBox { ... };
checkBox.CheckedChanged += (sender, e) =>
{
    // Perform required operation after examining e.Value
};

Os dados vinculam uma CheckBox

O CheckedChanged manipulador de eventos pode ser eliminado usando vinculação de dados e gatilhos para responder a um CheckBox que está sendo verificado ou vazio:

<CheckBox x:Name="checkBox" />
<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 checkBox}, Path=IsChecked}"
                     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 disparador de dados para monitorar a IsChecked propriedade do CheckBox. Quando essa propriedade se torna true, as FontAttributes propriedades e FontSize da Label alteração. Quando a IsChecked propriedade retorna para false, as FontAttributes propriedades e FontSize do Label são redefinidas para seu estado inicial.

Nas capturas de tela a seguir, a captura de tela do iOS mostra a Label formatação quando o CheckBox está vazio, enquanto a captura de tela do Android mostra a Label formatação quando o CheckBox está marcado:

Captura de tela de uma CheckBox vinculada a dados, no iOS e Android

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

Desativar uma caixa de seleção

Às vezes, um aplicativo entra em um estado em que uma CheckBox verificação não é uma operação válida. Nesses casos, o pode ser desabilitado CheckBox definindo sua IsEnabled propriedade como false.

Aparência da caixa de seleção

Além das propriedades que CheckBox herda da View classe, CheckBox também define uma Color propriedade que define sua cor como um Color:

<CheckBox Color="Red" />

As capturas de tela a seguir mostram uma série de objetos verificados CheckBox , onde cada objeto tem sua Color propriedade definida como um diferente Color:

Captura de tela de caixas de seleção coloridas, no iOS e Android

Estados visuais CheckBox

CheckBox tem um IsCheckedVisualState que pode ser usado para iniciar uma alteração visual para o CheckBox quando ele é verificado.

O exemplo XAML a seguir mostra como definir um estado visual para o IsChecked estado:

<CheckBox ...>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualState x:Name="Normal">
                <VisualState.Setters>
                    <Setter Property="Color"
                            Value="Red" />
                </VisualState.Setters>
            </VisualState>

            <VisualState x:Name="IsChecked">
                <VisualState.Setters>
                    <Setter Property="Color"
                            Value="Green" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</CheckBox>

Neste exemplo, o IsCheckedVisualState especifica que, quando o CheckBox for marcado, sua Color propriedade será definida como verde. O NormalVisualState especifica que quando o CheckBox está em um estado normal, sua Color propriedade será definida como vermelho. Portanto, o efeito geral é que o CheckBox é vermelho quando está vazio e verde quando é verificado.

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