UWP Community Toolkit DataGrid 控件:如何将单元格内容右对齐

UWP Community Toolkit DataGrid control : how to align cell content to right

我在 DataGrid I want its content be right-aligned. I have read the docs, mostly Customizable templates and styling for cells, rows and headers 中有一个数字列,我最终用这段代码完成右对齐单元格内容:

<controls:DataGrid.CellStyle>
    <Style TargetType="controls:DataGridCell">
        <Style.Setters>
            <Setter Property="HorizontalAlignment" Value="Right"/>
        </Style.Setters>
    </Style>
</controls:DataGrid.CellStyle>

不出所料,此代码确实可以满足我的要求,但包含所有单元格。我只希望数字列有这个属性,而且只有它,但我一直无法完成这个。

我做错了什么?

I want only the numeric column to have this property, and only it

根据您的要求,您可以为特定的 DataGridTextColumn 属性 指定单元格样式,如下所示。

<controls:DataGridTextColumn  >
    <controls:DataGridTextColumn.CellStyle>
        <Style TargetType="controls:DataGridCell">
            <Style.Setters>
                <Setter Property="HorizontalAlignment" Value="Right"/>
            </Style.Setters>
        </Style>
    </controls:DataGridTextColumn.CellStyle>
</controls:DataGridTextColumn>

该样式适用于特定列。

您必须设置 HorizontalContentAlignment 而不是 HorizontalAlignment,因为水平对齐会改变单元格大小。默认的单元格 HorizontalAlignmentStretch whis 将单元格大小拉伸为列大小。

这是设置HorizontalAlignment时的图片

这是设置 HorizontalContentAlignment 时的图片


基本上你可以定义三种不同的单元格样式:

    <Style x:Key="DataGridCellLeft" TargetType="controls:DataGridCell">
        <Setter Property="HorizontalContentAlignment" Value="Left" />
    </Style>
    <Style x:Key="DataGridCellCenter" TargetType="controls:DataGridCell">
        <Setter Property="HorizontalContentAlignment" Value="Center" />
    </Style>
    <Style x:Key="DataGridCellRight" TargetType="controls:DataGridCell">
        <Setter Property="HorizontalContentAlignment" Value="Right" />
    </Style>

在定义列时像 CellStyle 一样使用它。