Как вертикально расположить содержимое строк в WPF DataGrid? - PullRequest
3 голосов
/ 30 ноября 2011

Я хочу сделать запись данных VerticalAlignment=Center в DataGrid.По умолчанию запись данных VerticalAlignment=Top, выглядит некрасиво.Можете ли вы предоставить мне этот стиль?

Я определяю свой стиль в файле App.xaml.Ниже мой текущий стиль DataGrid:

    <Style x:Key="DataGridView" TargetType="DataGrid">
        <Setter Property="AlternatingRowBackground" Value="AliceBlue"></Setter>
        <Setter Property="AlternationCount" Value="1"></Setter>
        <Setter Property="AutoGenerateColumns" Value="False"></Setter>
        <Setter Property="GridLinesVisibility" Value="Horizontal"></Setter>
        <Setter Property="VerticalGridLinesBrush" Value="DarkGray"></Setter>
        <Setter Property="HorizontalGridLinesBrush" Value="DarkGray"></Setter>
        <Setter Property="RowHeight" Value="32"></Setter>
    </Style>

1 Ответ

8 голосов
/ 30 ноября 2011

Попробуйте установить VerticalContentAlignment="Center" на DataGrid:

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

или вы можете добавить установщик к своему стилю:

<Setter Property="VerticalContentAlignment" Value="Center"/>

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

ОБНОВЛЕНИЕ

Похоже, что встроенный в WPF DataGrid не следует правилу.

Решение зависит от типа используемых вами столбцов.

Для DataGridTemplateColumn используйте CellTemplate, например:

<DataTemplate>
    <!--Substitute the TextBlock by the actual cell content, but don't drop VerticalAlignment-->
  <TextBlock VerticalAlignment="Center" Text="{Binding Text}"/>
</DataTemplate>

Для DataGridTextColumn, установите ElementStyle:

<Style>
  <Setter Property="FrameworkElement.VerticalAlignment" Value="Center"/>
</Style>

Я пробовал это на DataGridTextColumn, но свойство от его родителя DataGridBoundColumn, поэтому должно работать и для DataGridCheckBoxColumn и DataGridHyperlinkColumn.

Обновление 2

Кстати, есть другое решение .

...