我正在开发 Visual Studio 扩展,并尝试对 WPF DataGrid 进行主题化以匹配 Visual Studio 浅色或深色主题。除了 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>
我认为设置
DataGrid
RowHeaderWidth
的唯一方法之一:
<DataGrid x:Name="dataGrid"
RowHeaderWidth="0"
... />
RowHeaderStyle
和RowHeaderTemplate
,但它们不会影响左上角的区域。
也可能是位于
PART_LeftHeaderGripper
的DataGridColumnHeader
拇指,它就在标题栏的左侧:
<Thumb x:Name="PART_LeftHeaderGripper"
HorizontalAlignment="Left"
Style="{StaticResource Style_HeaderGripper}" />
当我将 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>