如何在 xaml wpf 中将默认复选框样式替换为 png 图像
本文关键字:样式 复选框 替换 图像 png 默认 xaml wpf | 更新日期: 2023-09-27 18:31:22
如何用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>
是否可以替换默认样式?
在这种特殊情况下,您需要摆弄复选框的模板。
<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 x:Key="WhateverYouWantToCallMe" TargetType="{x:Type CheckBox}">
<!-- Content ect... -->
</ControlTemplate>
将其放入资源字典中,并将其称为复选框的静态资源,如下所示:
<CheckBox Template="{StaticResource WhateverYouWantToCallMe}"/>