列标题背景 - 但不是两次

问题描述 投票:0回答:1

我有一贯的风格:

<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" />
              ...

问题是背景应用了两次:一次针对所有标题,一次针对完整标题行,一次针对每个标题分别应用。因为我使用部分透明的颜色,这看起来相当丑陋。

如何让WPF不要将此样式应用于整个标题行背景?

wpf wpfdatagrid
1个回答
1
投票

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

    <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>
© www.soinside.com 2019 - 2024. All rights reserved.