问题描述
我的代码如下:
<CheckBox Content="Teste">
<CheckBox.Resources>
<SolidColorBrush x:Key="MaterialDesignCheckBoxOff" Color="White"/>
<SolidColorBrush x:Key="PrimaryHueMidBrush" Color="Transparent"/>
</CheckBox.Resources>
</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,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z" Fill="{DynamicResource MaterialDesignCheckBoxOff}" />
-
例如,checked trigger更改了
Data
属性以显示一个填充框。您所看到的实际上是绘制的填充框,而其中的对号完全没有填充,这是一个空白。<Trigger Property="IsChecked" Value="true"> <Setter Property="Data" TargetName="Graphic" Value="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3Z" /> <Setter Property="Fill" TargetName="Graphic" Value="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Background}" /> </Trigger>
如您所见,更改MaterialDesignCheckBoxOff
笔刷无法按预期工作,因为复选标记不是具有单独颜色的单独元素。
如果要更改此设置,则必须调整in the GitHub repository上的控制模板。您将必须复制默认模板和样式以创建单独的复选标记和背景路径,并相应地设置其颜色。之后,您可以将这些样式包含在资源字典中,并将它们用作命名资源或创建隐式样式,并覆盖 MaterialDesign 为CheckBox
提供的样式。