如何正确更改GridViewColumnHeader的航空颜色

时间:2018-12-26 22:04:30

标签: c# .net wpf mvvm

我当前正在尝试为GridView设置样式,我想将GridViewColumnHeader的颜色从默认的Aero蓝色和白色效果悬停在其上方时更改为静态蓝色。但是现在所做的是,它更改了空GridView的颜色,我想我需要定位一个按钮,因为它是从按钮基础iirc派生的。

我已经尝试为该特定问题创建自己的样式,我更改了一些设置方法和样式触发器。

<ListView Margin="10" Name="lvUsers">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
                    <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
                    <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
                </GridView>
            </ListView.View>
        </ListView>

与资源相关的

<Style TargetType="GridViewColumnHeader">
        <Setter Property="Background" Value="Green"/>
        <Setter Property="Foreground" Value="Yellow"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Background" Value="Red"/>
            </Trigger>
        </Style.Triggers>
    </Style>

预期的输出是当用户将鼠标悬停在Name上时,它将颜色从默认的航空蓝白色变为静态蓝色。

编辑 当用户将鼠标悬停在GridViewColumnHeader上时,我想更改颜色

1 个答案:

答案 0 :(得分:0)

使用50年前的按钮实现列表视图标题:)。最近没有。绝对不在WPF中。当您要更改列的背景颜色时,正是在做您需要做的事情。

如果要设置标题本身的样式,则需要修改控件模板。您所追求的部分实际上只不过是一些用于填充矩形的嵌套边框,网格和渐变笔刷。但是,这并不能说明标题中的所有功能(拖放,单击,调整大小等),因此模板和支持内容实际上很多。我定制的是大约400行Xaml。

您可以将模板转储到Blend中。不幸的是,笔刷没有使用按键,因此没有任何捷径:)。