She*_*dan 14
你可以简单地定义你自己ControlTemplate
的Checkbox
,在其中显示您的图片,而不是默认打勾.你可以找到默认ControlTemplate
为Checkbox
在复选框样式和模板上的MSDN页面.
在定义自己ControlTemplate
的时候,从默认开始通常是一个好主意.在您的项目中工作,然后您可以根据自己的喜好开始调整它.这样,它应该保留用户习惯的所有默认行为Checkbox
.
但这是我们在这里谈论的WPF ......通过一点横向思考,很容易使几个控件看起来像其他控件.例如,这里ToggleButton
有一个自定义ControlTemplate
,使它看起来像一个Checkbox
,Image
但当你点击它而不是正常的刻度线时,它会改变:
<ToggleButton Content="I'm An Image CheckBox Label" Foreground="Black">
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<StackPanel Orientation="Horizontal">
<Image>
<Image.Style>
<Style>
<Setter Property="Image.Source"
Value="/AppName;component/Images/Image1.jpg" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked,
RelativeSource={RelativeSource AncestorType=
{x:Type ToggleButton}}}" Value="True">
<Setter Property="Image.Source"
Value="/AppName;component/Images/Image2.jpg" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<ContentPresenter Content="{TemplateBinding Content}"
Margin="5,0,0,0" />
</StackPanel>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
这也将是很容易将此转换为CheckBox
作为同样使用该IsChecked
财产......你很可能甚至只是替换的单词的所有实例ToggleButton
字Checkbox
,它应该工作.