Partilhar via


CheckBox

Procurar amostra. Procurar no exemplo

O .NET Multi-Platform App UI (.NET MAUI) CheckBox é um tipo de botão que pode ser marcado ou desmarcado. Quando uma caixa de seleção está marcada, ela é considerada ativada. Quando uma caixa de seleção está desmarcada, ela é considerada desativada.

CheckBox define as propriedades a seguir:

  • IsChecked, do tipo bool, que indica se o CheckBox está marcado. Essa propriedade tem um modo de associação padrão de TwoWay.
  • Color, do tipo Color, que indica a cor do CheckBox.

Essas propriedades são apoiadas por objetos BindableProperty, o que significa que podem ser estilizadas e ser o alvo de associações de dados.

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

Criar um CheckBox

O exemplo a seguir mostra como criar uma instância de CheckBox em XAML:

<CheckBox />

Esse XAML resulta na aparência mostrada na seguinte captura de tela:

Captura de tela de um CheckBox vazio.

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

<CheckBox IsChecked="true" />

Esse XAML resulta na aparência mostrada na seguinte captura de tela:

Captura de tela de um CheckBox marcado.

Como alternativa, um CheckBox pode ser criado no código:

CheckBox checkBox = new CheckBox { IsChecked = true };

Responder a alteração de estado de um CheckBox

Quando a propriedade IsChecked é alterada por meio da manipulação do usuário ou quando um aplicativo define a propriedade IsChecked, o evento CheckedChanged é 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 do evento CheckedChanged:

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

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

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

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

Associar dados a um CheckBox

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

<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="18" />
        </DataTrigger>
    </Label.Triggers>
</Label>

Neste exemplo, o Label usa uma expressão de associação em um gatilho de dados para monitorar a propriedade IsChecked do CheckBox. Quando essa propriedade se torna true, as propriedades FontAttributes e FontSize do Label são alteradas. Quando a propriedade IsChecked retorna a false, as propriedades FontAttributes e FontSize de Label são redefinidas para o estado inicial.

A captura de tela a seguir mostra a formatação Label, quando o CheckBox é marcado:

Captura de tela de um CheckBox associado a dados.

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

Desabilitar um CheckBox

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

Aparência do CheckBox

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

<CheckBox Color="Red" />

A captura de tela a seguir mostra uma série de objetos CheckBox marcados, em que cada objeto tem sua propriedade Color definida com um Color diferente:

Captura de tela dos CheckBoxes coloridos.

Estados visuais CheckBox

O CheckBox tem um IsCheckedVisualState que pode ser usado para iniciar uma alteração visual no CheckBox no momento em que ele é marcado.

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

<CheckBox ...>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroupList>
            <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>
        </VisualStateGroupList>
    </VisualStateManager.VisualStateGroups>
</CheckBox>

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

Para obter mais informações sobre estados visuais, consulte Estados visuais.