如何格式化 WPF 数据网格 XAML 中的每个列 header
How to format each individual column header in a WPF Datagrid XAML
所以我正在尝试创建一个具有多种不同格式的 table。我目前正在努力解决的问题是如何通过在 XAML 中编码来调整 WPF 中 Datagrid 中列 header 的颜色。我所发现的只是格式化所有列 header 的方法。有什么办法可以分别格式化吗?
我的代码目前是这样的:
<DataGrid x:Name="CellStyleGrid" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="309,50,0,0" IsReadOnly="False" IsEnabled="True" CanUserAddRows="True" Width="172" RenderTransformOrigin="0.501,0.477" SelectionUnit="Cell" Grid.ColumnSpan="2" AlternatingRowBackground="#C2C2C2" AlternationCount="2" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=col1}" ClipboardContentBinding="{x:Null}" Header="Col1" CanUserResize="True"/>
<DataGridTextColumn Binding="{Binding Path=col2}" ClipboardContentBinding="{x:Null}" Header="Col2" CanUserResize="True"/>
<DataGridTextColumn Binding="{Binding Path=col3}" ClipboardContentBinding="{x:Null}" Header="Col3" CanUserResize="True"/>
</DataGrid.Columns>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#3B3B3B"/>
<Setter Property="Foreground" Value="White"/>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
此代码创建了一个简单的 table,其中包含三列,header 的颜色为深灰色,前景文本为白色。我希望将其中一个 header 变成浅灰色。
谢谢!
乔恩
将 AutoGenerateColumns 设置为 false,然后在每个列定义中指定 DataGridXColumn.HeaderStyle。这是一个粗略的例子:
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{SomeBinding}">
<DataGridTextColumn.HeaderStyle>
<Style>
<Setter Property="InkCanvas.Background"
Value="Blue" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
所以我正在尝试创建一个具有多种不同格式的 table。我目前正在努力解决的问题是如何通过在 XAML 中编码来调整 WPF 中 Datagrid 中列 header 的颜色。我所发现的只是格式化所有列 header 的方法。有什么办法可以分别格式化吗?
我的代码目前是这样的:
<DataGrid x:Name="CellStyleGrid" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="309,50,0,0" IsReadOnly="False" IsEnabled="True" CanUserAddRows="True" Width="172" RenderTransformOrigin="0.501,0.477" SelectionUnit="Cell" Grid.ColumnSpan="2" AlternatingRowBackground="#C2C2C2" AlternationCount="2" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=col1}" ClipboardContentBinding="{x:Null}" Header="Col1" CanUserResize="True"/>
<DataGridTextColumn Binding="{Binding Path=col2}" ClipboardContentBinding="{x:Null}" Header="Col2" CanUserResize="True"/>
<DataGridTextColumn Binding="{Binding Path=col3}" ClipboardContentBinding="{x:Null}" Header="Col3" CanUserResize="True"/>
</DataGrid.Columns>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#3B3B3B"/>
<Setter Property="Foreground" Value="White"/>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
此代码创建了一个简单的 table,其中包含三列,header 的颜色为深灰色,前景文本为白色。我希望将其中一个 header 变成浅灰色。 谢谢! 乔恩
将 AutoGenerateColumns 设置为 false,然后在每个列定义中指定 DataGridXColumn.HeaderStyle。这是一个粗略的例子:
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{SomeBinding}">
<DataGridTextColumn.HeaderStyle>
<Style>
<Setter Property="InkCanvas.Background"
Value="Blue" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>