如何在 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>

是否可以替换默认样式?

如何在 xaml wpf 中将默认复选框样式替换为 png 图像

在这种特殊情况下,您需要摆弄复选框的模板。

<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}"/>