将DataGrid列标题对齐到中心

Bis*_*han 29 c# wpf datagrid

我需要将WPF DataGrid Column Header文本与中心对齐.我使用HeaderStyle下面的属性创建了一个样式并附加了它.

样式

<Window.Resources>
    <Style x:Key="CenterGridHeaderStyle" TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

<DataGridTextColumn 
   Binding="{Binding Path=Name}" Header="Name" IsReadOnly="True" 
   HeaderStyle="{DynamicResource CenterGridHeaderStyle}"/>
Run Code Online (Sandbox Code Playgroud)

但是这不会将列标题文本与中心对齐.我怎样才能做到这一点?

Anj*_*ali 62

检查一下

<DataGridTextColumn Header="Nombre"
                          Binding="{Binding Nombre}">
<DataGridTextColumn.HeaderStyle>
  <Style TargetType="DataGridColumnHeader">
     <Setter Property="HorizontalContentAlignment"
                 Value="Center" />
  </Style>
</DataGridTextColumn.HeaderStyle>
Run Code Online (Sandbox Code Playgroud)

  • 将不胜感激任何评论为什么您的解决方案有效而不是@Bishan 的解决方案。 (3认同)
  • 我认为我们很高兴在 WPF 中并不是 object() 类型的所有内容,我们需要通过样式和绑定添加每个属性。好辛苦啊…… (2认同)

Evg*_*akh 14

在列中它应该是 StaticResource 而不是 DynamicResource:

风格

<Window.Resources>
    <Style x:Key="CenterGridHeaderStyle" TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

柱子

<DataGridTextColumn 
   Binding="{Binding Path=Name}" Header="Name" IsReadOnly="True" 
   HeaderStyle="{StaticResource CenterGridHeaderStyle}"/>
Run Code Online (Sandbox Code Playgroud)

  • IMO 这是真正的正确答案。接受的答案提供了一种替代方案,但实际上并未说明为什么问题中提供的代码是错误的。 (2认同)