如何将DataGridColumn文本(不是标题)居中到中心?

时间:2016-09-01 07:26:07

标签: c# wpf

我有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,并且我没有使用任何文本块,你可以在图像中看到。

可以这样做吗?

实际结果:

enter image description here

三个0应该居中。

2 个答案:

答案 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>