我有DataGrid
结构:
<DataGrid AutoGenerateColumns="False"
CanUserAddRows="False"
HorizontalContentAlignment="Center"
CanUserResizeColumns="False"
CanUserSortColumns="False"
CanUserResizeRows="False"
BorderBrush="DimGray"
BorderThickness="1"
IsReadOnly="True"
ItemsSource="{Binding MatchStats}"
HorizontalAlignment="Right"
Width="255"
Margin="10, 10, 30, 0">
<DataGrid.Columns>
<DataGridTextColumn Header="Foo" Binding="{Binding Path = PlayingMatch}" >
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MetroDataGridColumnHeader}">
<Setter Property="Background" Value="LightGreen" />
<Setter Property="Width" Value="85" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
...
我需要做的是将行的DataGrid
文本设置为中心。我实际上在标题中管理了这种情况,但我无法为行执行此操作。我在堆栈上看到了其他类似的问题,但所有这些都使用了textblock
,并且我没有使用任何文本块,你可以在图像中看到。
可以这样做吗?
实际结果:
三个0应该居中。
答案 0 :(得分:2)
在windows.resources部分添加以下样式
<Style x:Key="{x:Type DataGridCell}" TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"></ContentPresenter>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 1 :(得分:0)
使用TextBlock为Text构建DataGridTextColumn。因此,当未更改时(如您提供的代码),它将与TextBlock.TextAlignment一起使用。
<Style TargetType="{x:TypeDataGridCell}">
<Style.Setters>
<Setter Property="TextBlock.TextAlignment" Value="Center" />
</Style.Setters>
</Style>