Domanda

Vorrei creare un CheckBox che assomigli esattamente a un pulsante. Il mio debole tentativo iniziale non funziona affatto.

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

ContentPresenter non funziona (il pulsante è vuoto) e quando si fa clic sul pulsante, la proprietà IsChecked non si attiva. Inoltre, non so come far sembrare premuto il pulsante quando IsChecked è vero.

È stato utile?

Soluzione

Sarebbe una ToggleButton I tuoi bisogni? CheckBox ne deriva, e quindi sono molto simili.

Altri suggerimenti

Ho appena iniziato a scrivere lo stesso commento :)

<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 ora come volevi, Controllo casella di controllo:

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

Sono d'accordo che ToggleButton è la strada da percorrere, ma se vuoi che i tuoi contenuti vengano visualizzati nel tuo esempio, prova a cambiare la tua dichiarazione ContentPresenter in questo:

<ContentPresenter Content="{TemplateBinding Content}" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top