2011-05-20 11 views
17

I establecer la altura min de una cuadrícula de datos de esa manera:¿Cómo centrar el contenido de las celdas en una cuadrícula de datos?

<DataGrid MinRowHeight="40"> 

Después de la alimentación de la cuadrícula de datos con Datas, el texto en cada celda es superior y alineado a la izquierda. No pude encontrar una manera fácil de centrar ese texto.

¿Alguna sugerencia para hacer eso?

+0

Esto puede ayudar: http://www.kudinov.ru/?p=133 – Alexey

Respuesta

32

solución final:

<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

Esta es la solución correcta si su cuadrícula utiliza columnas distintas de DataGridTextColumn. Las soluciones de estilo TextBlock agregarán una línea debajo del texto si tiene columnas con plantilla en la grilla. Si alguien puede explicar lo que este código está haciendo ... – GBU

6

establecer vertical y HorizontalContentAlignment de la cuadrícula de datos al Centro

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

Si eso no funciona intento, se puede utilizar la solución en this answer. Utiliza un estilo que alinea los contenidos de la celda DataGrid

+0

¿Por qué no debería funcionar? –

+0

No funcionará para DataGridCheckBoxColumn. – IgorStack

6

puede usar estilos. agrego una muestra para DataGridCheckBoxColumn, espero que te coloque en la dirección correcta.

<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

Finalmente una solución que se puede establecer en una sola columna. ¡Gracias por eso! – C4u

1

Modificar la etiqueta de estilo como esto .....

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

El siguiente código se centrará el contenido de celdas en la cuadrícula de datos:

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

¡Explique el código! – gsamaras

+0

Esto funciona muy bien cuando se usa la cuadrícula de datos integrada con columnas de texto – galford13x

2

uso ElementStyle

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

    <Style x:Key="Centering" TargetType="{x:Type TextBlock}"> 
     <Setter Property="HorizontalAlignment" Value="Center" /> 
    </Style> 
Cuestiones relacionadas