如果使用png图像替换默认复选框样式,对于已检查状态和未检查状态。
这是我尝试的但是不符合xaml:
<CheckBox IsChecked="{Binding AirTemperatureGridChecked}">
<CheckBox.Background>
<Image Source="https://cdn4.iconfinder.com/data/icons/cc_mono_icon_set/blacks/48x48/checkbox_unchecked.png" Width="16" Height="16" />
</CheckBox.Background>
</CheckBox>
我尝试使用此代码,但是内容中的图像不会被替换。
<CheckBox IsChecked="{Binding AirTemperatureGridChecked}">
<Image Source="https://cdn4.iconfinder.com/data/icons/cc_mono_icon_set/blacks/48x48/checkbox_unchecked.png" Width="16" Height="16" />
</CheckBox>
可以替换默认样式吗?
答案 0 :(得分:1)
在这种特殊情况下,您需要摆弄CheckBox的模板。
<CheckBox IsChecked="{Binding AirTemperatureGridChecked}">
<CheckBox.Template>
<ControlTemplate TargetType="{x:Type CheckBox}">
<Grid>
<Image x:Name="Foo" Width="16" Height="16" Source="https://cdn4.iconfinder.com/data/icons/cc_mono_icon_set/blacks/48x48/checkbox_unchecked.png" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="Foo" Property="Opacity" Value="0.5" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</CheckBox.Template>
我从头开始制作这个,只是举例说明如何快速简便地设置自己的模板并运行控件设计。
正如你所看到的,它是由一个网格构成的,里面有你的图像,而下面是一个触发器,可以在未选中时使复选框降低其不透明度。
您可以在该网格中放置任何内容来设计您的复选框,就像使用任何窗口一样,并使用触发器为其提供功能。
另外(由于给每个复选框提供了大量的代码是不合理的)你可以给controltemplate一个关键:
<ControlTemplate x:Key="WhateverYouWantToCallMe" TargetType="{x:Type CheckBox}">
<!-- Content ect... -->
</ControlTemplate>
将它放在资源字典中,并将其作为复选框的StaticResource调用,如下所示:
<CheckBox Template="{StaticResource WhateverYouWantToCallMe}"/>