我有一个 WPF 表单,其复选框定义如下:
<Views:MyView Background="{DynamicResource MainBackground}">
...
<Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Static ResourceKeys:Switch.YesNoStyle}}">
...
</Style>
...
<CheckBox Grid.Column="0"
IsEnabled="False"
Checked="ToggleButton_OnChecked"
VerticalAlignment="Center"
Style="{x:Null}"
IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem},Mode=TwoWay}" />
...
</Views:MyView>
有一个问题 - 它以灰色背景显示(即使它处于活动状态),这让用户感到困惑:
未选中的复选框:
选中的复选框:
我希望背景是白色的。
问题的可能原因是
- 风格
<Style TargetType="{x:Type CheckBox}"
或 - 顶级容器的背景设置(
Background="{DynamicResource MainBackground}"
)。
我尝试过了
CheckBox
给and添加一个名字- 为该名称创建新样式。
这导致下面显示的代码并没有帮助。
<Views:MyView Background="{DynamicResource MainBackground}">
...
<Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Static ResourceKeys:Switch.YesNoStyle}}">
...
</Style>
<Style TargetType="{x:Type CheckBox}" x:Name="MyCheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="Background" Value="White"/>
</Style>
...
<CheckBox
Name="MyCheckBox"
Grid.Column="0"
IsEnabled="False"
Checked="ToggleButton_OnChecked"
VerticalAlignment="Center"
Style="{x:Null}"
IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem},Mode=TwoWay}" />
...
</Views:MyView>
如何将该特定复选框的背景更改为白色(使其看起来像任何其他活动复选框)?