如何使DataGridTemplateColumn.HeaderTemplate居中

时间:2012-12-06 16:26:14

标签: wpf xaml datagrid

有任何线索吗?以下代码无法正常运行......

谢谢!

 <DataGrid AutoGenerateColumns="False"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch"  Name="dg1"   Grid.Row="0" >
     <DataGridTemplateColumn  Width="SizeToCells" IsReadOnly="True">
         <DataGridTemplateColumn.HeaderTemplate>
             <DataTemplate>
                 <Label HorizontalAlignment="Center" Content="First Name"></Label>
             </DataTemplate>
          </DataGridTemplateColumn.HeaderTemplate>
          <DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                 <Label Content="{Binding FirstName}" />
              </DataTemplate>
          </DataGridTemplateColumn.CellTemplate>
     </DataGridTemplateColumn>

更新:

@ArsenMkrt的解决方案很棒,但我面临着一些奇怪的垂直线......

enter image description here

4 个答案:

答案 0 :(得分:14)

使用HeaderStyle代替HeaderTemplate

    <DataGridTemplateColumn.HeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="HorizontalAlignment" Value="Center"/>
        </Style>
    </DataGridTemplateColumn.HeaderStyle> 

答案 1 :(得分:10)

试试这个我可以毫无问题地集中标题。

<DataGridTemplateColumn.HeaderStyle>
    <Style TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
</DataGridTemplateColumn.HeaderStyle>

答案 2 :(得分:6)

不确定是否仍有帮助但是:

<DataGridTemplateColumn.HeaderStyle>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>                            
    </Style>
</DataGridTemplateColumn.HeaderStyle>

会使标题居中而不会出现垂直条问题

答案 3 :(得分:2)

这里的所有答案都解决了问题,但主题与其他列标题不同。所以对我来说有点变化。在这里,如果有人还在寻找它。

<DataGridTemplateColumn.HeaderStyle>
    <Style TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="Background" Value="Transparent"/>
    </Style>
</DataGridTemplateColumn.HeaderStyle>