WPF: Como fazer uma caixa de seleção “pushlike”?
-
06-07-2019 - |
Pergunta
Gostaria de fazer um CheckBox que parece exatamente como um botão. Meu débil tentativa inicial não funciona em todos.
<CheckBox x:Name="test">
Testing!
<CheckBox.Template>
<ControlTemplate>
<Button>
<ContentPresenter/>
</Button>
</ControlTemplate>
</CheckBox.Template>
</CheckBox>
O ContentPresenter não está funcionando (o botão está vazia) e quando o botão é clicado, a propriedade IsChecked não alternância. Além disso, eu não sei como fazer o botão olhar empurrado quando IsChecked é verdade.
Solução
Será que um ToggleButton terno suas necessidades? deriva CheckBox a partir dele, e por isso eles são muito semelhantes.
Outras dicas
Eu apenas comecei a escrever mesmo comentário:)
<ToggleButton Name="tb" Height="45" Width="45">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Content" Value="False"/>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
E agora como você queria, o controle Caixa de seleção:
<CheckBox>
<CheckBox.Template>
<ControlTemplate TargetType="CheckBox">
<ToggleButton x:Name="toggleButton">
</ToggleButton>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True" SourceName="toggleButton">
<Setter Property="Content" Value="True"/>
</Trigger>
<Trigger Property="Content" Value="True">
<Setter Property="IsChecked" Value="True"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</CheckBox.Template>
</CheckBox>
Eu concordo que ToggleButton é o caminho a percorrer, mas se você quiser que o seu conteúdo a mostrar-se no seu exemplo, tente mudar a sua declaração ContentPresenter a esta:
<ContentPresenter Content="{TemplateBinding Content}" />