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.

Foi útil?

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}" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top