【问题标题】:DataGrid header alignmentDataGrid 标题对齐
【发布时间】:2013-08-15 14:53:11
【问题描述】:

我在 WPF(c#) 中使用 DataSet 填充 DataGrid 控件。我需要一种将标题文本对齐到中心的方法。

注意:在我的程序运行期间,可能会更新 DataGrid.ItemsSource。 和我之前的问题不一样...

【问题讨论】:

  • 这个问题是不是你已经问过好几次了,每次都否定了使用样式设置器的想法,并认为它“不切实际”?
  • 同一个问题你重复了好几次。 stackoverflow.com/questions/18195655/…
  • (对 Vimal CK)该帖子有一个静态列(firstName)。在这篇文章中,我需要对齐到中心标题。
  • 我已经为您提供了特定答案的 SO 链接,但我猜您只想要直接代码,不想自己尝试任何东西。

标签: wpf xaml datagrid


【解决方案1】:
<DataGrid ItemsSource="{Binding Items}" 
              AutoGenerateColumns="True">
        <DataGrid.ColumnHeaderStyle>
            <Style TargetType="DataGridColumnHeader">
                <Style.Setters>
                    <Setter Property="HorizontalContentAlignment" Value="Center"/>
                </Style.Setters>
            </Style>
        </DataGrid.ColumnHeaderStyle>
    </DataGrid>

【讨论】:

  • 谢谢安德鲁。你今天回答我两三遍
【解决方案2】:

您只需要设置DataGridColumnHeader 类型的HorizontalContentAlignment 属性的样式。所以添加到资源中:

<Style TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>

附录一般情况下,你可以看到control templates at this page on MSDN,它可以让你推断出如何应用你需要的样式。在这种情况下,控件DataGridColumnHeader 的模板如下所示:

<Grid>
    <Border x:Name="columnHeaderBorder" BorderThickness="1" Padding="3,0,3,0">
        <!-- (ellided brushes for brevity) -->

        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
      </Border>

      <Thumb x:Name="PART_LeftHeaderGripper"
             HorizontalAlignment="Left"
             Style="{StaticResource ColumnHeaderGripperStyle}" />
      <Thumb x:Name="PART_RightHeaderGripper"
             HorizontalAlignment="Right"
             Style="{StaticResource ColumnHeaderGripperStyle}" />
</Grid>

ContentPresenter 是显示标题文本的位置——您可以看到它的HorizontalAlignment 设置为控件的HorizontalContentAlignment(模板绑定)。因此,只需在控件类型DataGridColumnHeader 上设置样式属性即可。

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2011-01-26
    • 2013-10-08
    • 2015-11-10
    • 1970-01-01
    • 2012-05-08
    • 2011-01-31
    • 2017-05-26
    • 2012-11-07
    相关资源
    最近更新 更多