Material 设计 (WPF):删除复选框背景

Material Design (WPF): Remove CheckBox Background

我试图仅在选中 CheckBox 时才显示正方形和复选标记。

我的代码如下:

<CheckBox Content="Teste">
     <CheckBox.Resources>
           <SolidColorBrush x:Key="MaterialDesignCheckBoxOff" Color="White"/>
           <SolidColorBrush x:Key="PrimaryHueMidBrush" Color="Transparent"/>
     </CheckBox.Resources>
</CheckBox>

但是,它不起作用,当删除背景时,启用标记消失。

我想如何离开 CheckBox:

这看起来是一件容易做的事情,但事实并非如此。 MaterialDesign 中 CheckBox 的默认模板使用 Path 绘制框和复选标记。事实上,它重用了相同的Path,只是改变了它的Data 属性.

  • Path 是用它的 normal state 定义的(只是空框)

    <Path x:Name="Graphic"
          Data="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z" 
          Fill="{DynamicResource MaterialDesignCheckBoxOff}" />
    

  • 例如 checked triggerData 属性 更改为显示填充框。你看到的其实是绘制的填充框,里面的对勾根本就没有填充,就是一个空隙。

    <Trigger Property="IsChecked" Value="true">
       <Setter Property="Data" TargetName="Graphic" Value="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" />
       <Setter Property="Fill" TargetName="Graphic" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}" />
    </Trigger>
    

如您所见,更改 MaterialDesignCheckBoxOff 画笔并没有像您预期的那样工作,因为复选标记不是具有单独颜色的单独元素。

如果要更改此设置,则必须调整可以找到的控件模板 in the GitHub repository。您必须复制默认模板和样式以创建单独的复选标记和背景路径并相应地设置它们的颜色。之后,您可以将这些样式包含在资源字典中并将它们用作命名资源或创建隐式样式并覆盖 MaterialDesignCheckBox.[=25 提供的样式=]