如何格式化WPF Datagrid上的标头?

Edw*_*uay 5 wpf datagrid

我正在使用Codeplex的WPF Datagrid.

我可以在dg:DataGrid元素中设置行的样式和以下属性.

但是我如何设计标题?我在网上找到100个定义样式的例子,并在Datagrid元素中使用例如x:Key ="DataGridColumnHeaderStyle",但它们似乎都不适用于我.

我怎样才能在此DataGrid上将Datagrid标题背景更改为橙色?

<dg:DataGrid AlternatingRowBackground="#ddd" 
    RowBackground="#eee" 
    Name="theGrid1" 
    VerticalAlignment="Stretch" 
    AutoGenerateColumns="False" 
    BorderBrush="#ddd">
...
</dg:DataGrid>
Run Code Online (Sandbox Code Playgroud)

sky*_*ier 11

DataGrid上还有一个属性,允许为标题设置样式:

<DataGrid.ColumnHeaderStyle>
     <Style TargetType="{x:Type DataGridColumnHeader}">
          <Setter Property="FontWeight"
                  Value="Bold" />
     </Style>
</DataGrid.ColumnHeaderStyle>
Run Code Online (Sandbox Code Playgroud)


小智 2

本例中的样式位于名为 generic.xaml 的文件中,它应该位于项目中的 themems 文件夹中。

找到它并打开它。在里面你会发现这一行控制列标题的背景

 <dg:DataGridHeaderBorder SortDirection="{TemplateBinding SortDirection}"
                                     IsHovered="{TemplateBinding IsMouseOver}"
                                     IsPressed="{TemplateBinding IsPressed}"
                                     IsClickable="{TemplateBinding CanUserSort}"
                                     Background="{TemplateBinding Background}"
                                     BorderBrush="{TemplateBinding BorderBrush}"
                                     BorderThickness="{TemplateBinding BorderThickness}"
                                     Padding ="{TemplateBinding Padding}"
                                     SeparatorVisibility="{TemplateBinding SeparatorVisibility}"


                         SeparatorBrush="{TemplateBinding SeparatorBrush}">
Run Code Online (Sandbox Code Playgroud)

基本上它是在模板中的另一个地方定义的:这将向您解释 TemlateBinding MSDN TemplateBinding

HTH,埃里克