更改 WPF DataGrid 左上角标题的背景颜色

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

我正在开发 Visual Studio 扩展,并尝试对 WPF DataGrid 进行主题化以匹配 Visual Studio 浅色或深色主题。除了 DataGrid 的左上角之外,我已经设法使所有内容正常工作。

DataGrid

在 Silverlight 中,这称为 TopLeftCornerHeader,但我不知道如何更改 WPF 中的背景颜色。

到目前为止,我已经像这样修改了DataGrid,

<DataGrid 
    Background="{DynamicResource {x:Static wpf:Theme.BackgroundKey}}"
    Foreground="{DynamicResource {x:Static wpf:Theme.ForegroundKey}}"
    RowBackground="{DynamicResource {x:Static wpf:Theme.BackgroundKey}}"
    AlternatingRowBackground="{DynamicResource {x:Static wpf:Theme.BackgroundAccentKey}}" 
    HorizontalGridLinesBrush="{DynamicResource {x:Static wpf:Theme.ControlBorderKey}}"
    VerticalGridLinesBrush="{DynamicResource {x:Static wpf:Theme.ControlBorderKey}}"
    BorderBrush="{DynamicResource {x:Static wpf:Theme.ControlBorderKey}}" >
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Background" Value="{DynamicResource {x:Static wpf:Theme.BackgroundKey}}" />
        </Style>
    </DataGrid.ColumnHeaderStyle>
wpf datagrid
2个回答
1
投票

我认为设置

DataGrid
RowHeaderWidth
的唯一方法之一:

<DataGrid x:Name="dataGrid"
          RowHeaderWidth="0" 
          ... />

我尝试设置

RowHeaderStyle
RowHeaderTemplate
,但它们不会影响左上角的区域。

也可能是位于

PART_LeftHeaderGripper
DataGridColumnHeader
拇指,它就在标题栏的左侧:

<Thumb x:Name="PART_LeftHeaderGripper"
       HorizontalAlignment="Left"
       Style="{StaticResource Style_HeaderGripper}" />

0
投票

当我将 DataGridColumnHeader Margin 设置为 0,0,0,0(之前为 9,0,0,0)时,问题得到解决

<Style TargetType="DataGridColumnHeader" x:Key="DataGridHeaderStyle">
    <Setter Property="Background" Value="#272537" />
    <Setter Property="Foreground" Value="AliceBlue" />
    <Setter Property="FontWeight" Value="Bold"/>
    <Setter Property="Margin" Value="0,0,0,0" />
</Style>
© www.soinside.com 2019 - 2024. All rights reserved.