2011-05-20 230 views
17

予设定的数据网格这样的最小高度:如何将数据网格中的单元格内容居中?

<DataGrid MinRowHeight="40"> 

饲喂DATAS数据网格后,在每个单元中的文本是顶部和左对齐。 我无法找到将文本居中的简单方法。

对此有何建议?

+0

这可能有所帮助:http://www.kudinov.ru/?p=133 – Alexey 2014-06-13 08:29:12

回答

32

最终的解决方案:

<Style x:Key="DataGridContentCellCentering" TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Background="{TemplateBinding Background}"> 
        <ContentPresenter VerticalAlignment="Center" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+2

如果您的网格使用DataGridTextColumn以外的列,这是正确的解决方案。如果您在网格上有模板列,TextBlock样式解决方案将在文本的下方添加一行。 如果有人可以请解释这段代码在做什么... – GBU 2016-10-27 18:26:46

6

试试DataGrid的垂直和Horizo​​ntalContentAlignment设置为中心

<DataGrid VerticalContentAlignment="Center" HorizontalContentAlignment="Center" /> 

如果不工作,你可以在this answer使用该解决方案。它使用对齐DataGrid单元格内容的样式,您可以使用样式来对齐数据网格单元格内容

+0

为什么它不起作用? – 2016-03-11 01:39:11

+0

不适用于DataGridCheckBoxColumn。 – IgorStack 2017-11-30 19:15:52

6

。我为DataGridCheckBoxColumn添加了一个示例,我希望它能让您朝着正确的方向发展。

<DataGridCheckBoxColumn Header="is active" IsReadOnly="False"> 
     <DataGridCheckBoxColumn.ElementStyle> 
      <Style TargetType="CheckBox"> 
       <Setter Property="VerticalAlignment" Value="Center"/> 
        <Setter Property="HorizontalAlignment" Value="Center"/> 
      </Style> 
     </DataGridCheckBoxColumn.ElementStyle> 
     <DataGridCheckBoxColumn.Binding> 
      <Binding Path="ISACTIVE" ValidatesOnDataErrors="True" Converter="{StaticResource MyBoolToIsActiveConverter}" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" 
           NotifyOnValidationError="True" ValidatesOnExceptions="True"> 
         </Binding> 
        </DataGridCheckBoxColumn.Binding> 
       </DataGridCheckBoxColumn> 
+0

最后一个可以设置为单个列的解决方案。感谢那! – C4u 2016-07-07 15:49:26

1

修改你的风格标签这样.....

<Style x:Key="CellTextCentre" TargetType="DataGridCell"> 
    <Setter Property="TextBlock.TextAlignment" Value="Center"></Setter> 
    <Setter Property="TextBlock.VerticalAlignment" Value="Center"></Setter> 
</Style> 
15

下面的代码将集中在数据网格单元格的内容:

<Style TargetType="DataGridCell"> 
    <Setter Property="TextBlock.TextAlignment" Value="Center" /> 
</Style> 
+1

解释代码! – gsamaras 2015-05-26 10:30:47

+0

当使用带有文本列的内置数据网格 – galford13x 2015-12-13 17:34:25

2

使用ElementStyle

<DataGridTextColumn ElementStyle="{StaticResource Centering}"/> 

    <Style x:Key="Centering" TargetType="{x:Type TextBlock}"> 
     <Setter Property="HorizontalAlignment" Value="Center" /> 
    </Style> 
相关问题