Question

Je voudrais créer une CheckBox qui ressemble exactement à un bouton. Ma faible tentative initiale ne fonctionne pas du tout.

<CheckBox x:Name="test">
    Testing!
    <CheckBox.Template>
        <ControlTemplate>
            <Button>
                <ContentPresenter/>
            </Button>
        </ControlTemplate>
    </CheckBox.Template>
</CheckBox>

ContentPresenter ne fonctionne pas (le bouton est vide) et lorsque l'utilisateur clique sur le bouton, la propriété IsChecked ne bascule pas. De plus, je ne sais pas comment faire en sorte que le bouton ait l’air poussé quand IsChecked est vrai.

Était-ce utile?

La solution

Une ToggleButton conviendrait-elle vos besoins? CheckBox en dérive, et ils sont donc très similaires.

Autres conseils

Je viens juste de commencer à écrire le même commentaire:)

<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>

Et maintenant comme vous le souhaitiez, Contrôle de case à cocher:

<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>

Je conviens que ToggleButton est la voie à suivre, mais si vous souhaitez que votre contenu apparaisse dans votre exemple, essayez de remplacer votre déclaration ContentPresenter par ceci:

<ContentPresenter Content="{TemplateBinding Content}" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top