我在DataGrid中有一个数字列,我希望其内容右对齐。我有read the docs,主要是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>
不出所料,此代码确实可以实现我想要的功能,但具有所有单元格。我只希望数字列具有此属性,也只有它,但是我无法做到这一点。
我在做什么错了?
答案 0 :(得分:0)
我只希望数字列具有此属性,并且只有它
根据您的要求,您可以将单元格样式赋予特定的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>
样式将适用于特定的列。
答案 1 :(得分:0)
您必须设置HorizontalContentAlignment
而不是HorizontalAlignment
,因为水平对齐会更改像元大小。将单元格大小扩展到列大小时,默认单元格HorizontalAlignment
为Stretch
。
当您设置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
一样使用它。