首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将DataGrid列标题居中对齐

将DataGrid列标题居中对齐
EN

Stack Overflow用户
提问于 2013-10-02 14:26:40
回答 6查看 62.5K关注 0票数 37

我需要将WPF DataGrid Column Header文本与Center对齐。我创建了一个样式,并使用HeaderStyle属性附加了它,如下所示。

样式的

代码语言:javascript
复制
<Window.Resources>
    <Style x:Key="CenterGridHeaderStyle" TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
</Window.Resources>

代码语言:javascript
复制
<DataGridTextColumn 
   Binding="{Binding Path=Name}" Header="Name" IsReadOnly="True" 
   HeaderStyle="{DynamicResource CenterGridHeaderStyle}"/>

但这不会使列标题文本与中心对齐。我该怎么做呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-10-02 14:42:45

看看这个

代码语言:javascript
复制
<DataGridTextColumn Header="Nombre"
                          Binding="{Binding Nombre}">
<DataGridTextColumn.HeaderStyle>
  <Style TargetType="DataGridColumnHeader">
     <Setter Property="HorizontalContentAlignment"
                 Value="Center" />
  </Style>
</DataGridTextColumn.HeaderStyle>
票数 77
EN

Stack Overflow用户

发布于 2017-07-15 07:17:11

列中应该是StaticResource而不是DynamicResource:

样式的

代码语言:javascript
复制
<Window.Resources>
    <Style x:Key="CenterGridHeaderStyle" TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
</Window.Resources>

代码语言:javascript
复制
<DataGridTextColumn 
   Binding="{Binding Path=Name}" Header="Name" IsReadOnly="True" 
   HeaderStyle="{StaticResource CenterGridHeaderStyle}"/>
票数 14
EN

Stack Overflow用户

发布于 2016-10-05 21:33:14

在AutoGeneratingColumn上有一个用于以编程方式完成此操作的响应:

代码语言:javascript
复制
 private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
                e.Column.HeaderStyle = new Style(typeof(DataGridColumnHeader));
                e.Column.HeaderStyle.Setters.Add(new Setter(HorizontalContentAlignmentProperty, HorizontalAlignment.Center));

    }

提示,使用属性:

代码语言:javascript
复制
public class ColumnNameAttribute : Attribute
{
    public HorizontalAlignment Alignment { get; set;}
    public ColumnNameAttribute(HorizontalAlignment alignment){
        Alignment = alignment;
}

public class Example(){
    [ColumnName(HorizontalAlignment.Center)]
    public string Column {get; set;}
}

 private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
   var desc = e.PropertyDescriptor as PropertyDescriptor;
   var att = desc.Attributes[typeof(ColumnNameAttribute)] as ColumnNameAttribute;
   if(att != null){
           e.Column.HeaderStyle = new Style(typeof(DataGridColumnHeader));
           e.Column.HeaderStyle.Setters.Add(new Setter(HorizontalContentAlignmentProperty, att.Alignment));
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19131091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档