Как центрировать содержимое ячеек в сетке данных? - PullRequest
20 голосов
/ 20 мая 2011

Я установил минимальную высоту сетки данных следующим образом:

<DataGrid MinRowHeight="40">

После заполнения сетки данных данными текст в каждой ячейке выравнивается по верху и по левому краю.Я не мог найти простой способ центрировать этот текст.

Есть предложения для этого?

Ответы [ 6 ]

38 голосов
/ 24 мая 2011

Окончательное решение:

<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>
18 голосов
/ 26 мая 2015

Следующий код центрирует содержимое ячеек в DataGrid:

<Style TargetType="DataGridCell">
    <Setter Property="TextBlock.TextAlignment" Value="Center" />
</Style>
7 голосов
/ 20 мая 2011

вы можете использовать стили. я добавляю образец для 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>
6 голосов
/ 20 мая 2011

Попробуйте установить для параметра DataGrid Vertical и HorizontalContentAlignment значение Center

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

Если это не сработает, вы можете использовать решение в этом ответе .Он использует стиль, который выравнивает содержимое ячейки DataGrid

3 голосов
/ 15 марта 2016

использовать ElementStyle

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

  <Style x:Key="Centering" TargetType="{x:Type TextBlock}">
       <Setter Property="HorizontalAlignment" Value="Center" />
  </Style>
2 голосов
/ 29 марта 2015

Измените свой стиль тега, как это .....

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