列 header 背景 -- 但不是两次

Column header background -- but not twice

我一贯作风:

<Style TargetType="{x:Type DataGrid}">

  <Setter Property="ColumnHeaderStyle">
    <Setter.Value>
      <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="Background" Value="{x:Null}" /> <!-- this doesn't help, either -->

        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
              <Border Background="SomeTransparentColor" CornerRadius="20" Margin="5" />
              ...

问题是背景被应用 两次: 一次是所有 header 在一起,整个 header 行,一次是每个 header 分别。因为我用了半透明的颜色,所以看起来比较难看。

如何防止 WPF 将此样式也应用于整个 header 行背景?

DataGrid 列 Header 的默认样式将一个布局放在所有列 header 下方,这些列具有与列 header 相同的样式。添加此基础层,以便 header 区域明显填满整个水平 space,即使所有列 header 的总和较小。以下样式更改了方法但保留了要求并删除了基础层:

    <Style TargetType="{x:Type DataGridColumnHeadersPresenter}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="1*" />
                        </Grid.ColumnDefinitions>
                        <ItemsPresenter />
                        <DataGridColumnHeader x:Name="PART_FillerColumnHeader"
                                              Grid.Column="1"
                                              IsHitTestVisible="False" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>