更改GridViewColumn标题颜色

roz*_*wer 2 wpf listview

我有这个ListView:

<ListView  Name="lvFiles" Background="Transparent" BorderThickness="0">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="File name" />
            <GridViewColumn Header="Size" Width="50" />
        </GridView>
    </ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)

如何设置标题颜色?

Xav*_*ier 7

我没有GridView亲自使用,但快速的网络搜索让我:

GridView列标题样式和模板概述

该页面链接到其他页面,以解释您可以使用GridView列标题执行的各种操作.看起来有多种方法来设置"颜色"(不确定你的意思Foreground或是Background),但使用Style似乎你可能想要的东西.您可以设置要应用于所有列标题的样式,如下所示:

<GridView>
    <GridView.ColumnHeaderContainerStyle>
        <Style TargetType="{x:Type GridViewColumnHeader}">
            <!-- Set any properties you want to set -->
            <Setter Property="Background" Value="LightBlue" />
            <Setter Property="Foreground" Value="Black" />
            <Setter Property="FontWeight" Value="Bold" />
        </Style>
    </GridView.ColumnHeaderContainerStyle>
</GridView>
Run Code Online (Sandbox Code Playgroud)

您可以覆盖特定列的标题样式,如下所示:

<GridViewColumn Header="Something">
    <GridViewColumn.HeaderContainerStyle>
        <Style TargetType="{x:Type GridViewColumnHeader}">
            <!-- Set any properties you want to set -->
            <Setter Property="Background" Value="DarkBlue" />
            <Setter Property="Foreground" Value="White" />
            <Setter Property="FontWeight" Value="Bold" />
        </Style>
    </GridViewColumn.HeaderContainerStyle>
</GridViewColumn>
Run Code Online (Sandbox Code Playgroud)

编辑:虽然您可以使用styes和数据模板(我在本答案的顶部链接的概述中介绍)来自定义大多数事物,但有些事情是不可自定义的,因为它们被烘焙到控件模板中 - 例如出现在每个列标题上方和下方的边框.如果您需要修改任何这些内容,则需要设置一个样式,将该Template属性设置为ControlTemplate您创建的自定义.

如果要为列标题创建自己的控件模板,建议您首先将示例模板复制到应用程序资源中.然后调整你需要调整的部分.请记住,Template在控件上设置属性会完全替换模板,这意味着您必须定义要使用的整个模板,而不是简单地定义您希望与默认值不同的部分.