我想制作一个看起来与按钮完全相同的CheckBox。我最初的微弱尝试根本不起作用。
<CheckBox x:Name="test">
Testing!
<CheckBox.Template>
<ControlTemplate>
<Button>
<ContentPresenter/>
</Button>
</ControlTemplate>
</CheckBox.Template>
</CheckBox>
ContentPresenter无效(按钮为空),单击该按钮时,IsChecked属性不会切换。另外,当IsChecked为真时,我不知道如何按下按钮。
答案 0 :(得分:13)
ToggleButton会满足您的需求吗? CheckBox源自它,因此它们非常相似。
答案 1 :(得分:6)
我刚开始写同样的评论:)
<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>
<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>
答案 2 :(得分:2)
我同意ToggleButton是可行的方法,但如果您希望您的内容显示在您的示例中,请尝试将ContentPresenter声明更改为:
<ContentPresenter Content="{TemplateBinding Content}" />