WPF:“プッシュライク”の作り方チェックボックス?
-
06-07-2019 - |
質問
ボタンのように見えるCheckBoxを作成したいと思います。最初の微弱な試みはまったく機能しません。
<CheckBox x:Name="test">
Testing!
<CheckBox.Template>
<ControlTemplate>
<Button>
<ContentPresenter/>
</Button>
</ControlTemplate>
</CheckBox.Template>
</CheckBox>
ContentPresenterは機能せず(ボタンは空です)、ボタンをクリックしてもIsCheckedプロパティは切り替わりません。また、IsCheckedがtrueのときにボタンをプッシュされたように見せる方法がわかりません。
解決
ToggleButton は適していますかあなたの要望? CheckBoxはそれから派生しているため、非常によく似ています。
他のヒント
同じコメントを書き始めたところです:)
<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>
そして、あなたが望むように、チェックボックスコントロール:
<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>
ToggleButtonを使用する方法に同意しますが、コンテンツをサンプルに表示したい場合は、ContentPresenter宣言を次のように変更してみてください。
<ContentPresenter Content="{TemplateBinding Content}" />
所属していません StackOverflow