更改WPF CheckBox中的颜色

时间:2016-06-19 15:06:07

标签: wpf xaml

我想为WPF复选框指定边框和背景的特定颜色。到目前为止我看到的所有例子似乎都太复杂了,因为它们涉及到改变一切 - 我只是想改变颜色。

这就是我到目前为止 - 颜色是正确的但复选框已缩小(无法看到'tick'符号)......

<Style TargetType="CheckBox">
    <Setter Property="VerticalAlignment" Value="Center" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="Background" Value="#666666" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="CheckBox">
                <Border Background="{TemplateBinding Background}" 
                        BorderThickness="1" 
                        BorderBrush="Aquamarine">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsChecked" Value="False">
            <Setter Property="BorderBrush" Value="Aquamarine"/>
        </Trigger>
        <Trigger Property="IsChecked" Value="True">
            <Setter Property="BorderBrush" Value="Aquamarine" />
        </Trigger>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="#ffff00"/>
            <Setter Property="BorderBrush" Value="Aquamarine"/>
        </Trigger>
    </Style.Triggers>
</Style>

1 个答案:

答案 0 :(得分:2)

问题是ControlTemplates不能用作样式。由于无法放大特定元素,因此每次都需要声明所有内容。例如,您无法看到“tick”符号,因为您省略了边框的尺寸。这很容易解决:

<Border Background="{TemplateBinding Background}" 
        BorderThickness="1" 
        BorderBrush="Aquamarine"
        Width="13"
        Height="13"
        >

但主要问题仍然是,你不会得到一个功能齐全的CheckBox。它最容易复制the original template并将其更改为您喜欢的方式。

相关问题