WPF: Come creare un & # 8220; pushlike & # 8221; casella di controllo?
-
06-07-2019 - |
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.
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}" />