首页 > 解决方案 > UWP中数据网格的中心列标题

问题描述

我试图在 DataGrid 中居中列标题。要在 UWP UI 中添加 DataGrid,我正在使用 nuget 包“Microsoft.Toolkit.Uwp.UI.Controls.DataGrid”,如 microsoft 文档链接中所述,请在此处输入链接描述。我尝试在这里搜索,但只有 WPF 的解决方案在此链接中,在此处输入链接描述

在这段代码中,我不能使用 TargetType="DataGridColumnHeader"。

<controls:DataGrid.Columns>
 <controls:DataGridTextColumn Header="Area Name" Binding="{Binding Height_m}" Width="*">
  <controls:DataGridTextColumn.HeaderStyle>
   <Style TargetType="DataGridColumnHeader">
     <Setter Property="HorizontalContentAlignment" Value="Center" />
   </Style>
  </controls:DataGridTextColumn.HeaderStyle>
 </controls:DataGridTextColumn>
</controls:DataGrid.Columns>

它显示异常:名称空间“使用:Microsoft.Toolkit.Uwp.UI.Controls”中不存在名称“DataGridColumnHeader”。

标签: c#uwpuwp-xamlwindows-community-toolkit

解决方案


DataGridColumnHeader不在Microsoft.Toolkit.Uwp.UI.Controls命名空间下,而是在Microsoft.Toolkit.Uwp.UI.Controls.Primitives命名空间下。

所以需要添加对应的命名空间引用:

xmlns:prim="using:Microsoft.Toolkit.Uwp.UI.Controls.Primitives"

...

<controls:DataGrid.ColumnHeaderStyle>
    <Style TargetType="prim:DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="MinWidth" Value="200" />
    </Style>
</controls:DataGrid.ColumnHeaderStyle>

设置为更好的MinWidth查看居中效果,如果不需要,可以删除。

但是,由于列的宽度受列内容的影响,可能会观察到表头没有居中,这时可以考虑设置一个MinWidth.

谢谢


推荐阅读