Как вертикально центрировать содержимое строк в WPF DataGrid?
Я хочу сделать запись данных VerticalAlignment=Center в DataGrid. По умолчанию запись данных VerticalAlignment=Top выглядит уродливо. Можете ли вы предоставить мне этот стиль?
Я определяю свой стиль в приложении.файл 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 ответ:
Попробуйте установить
VerticalContentAlignment="Center"наDataGrid:<DataGrid VerticalContentAlignment="Center"> ... </DataGrid>Или вы можете добавить сеттер в свой стиль:
<Setter Property="VerticalContentAlignment" Value="Center"/>При применении к
ItemsControls это свойство обычно изменяет выравнивание каждого отдельного контейнера элемента. В вашем случае это должно заставить все строки выровнять их содержимое по центру.Обновить
Похоже, что встроенный WPF
DataGridне следует правилу.Решение зависит от типа используемых столбцов.
Для
DataGridTemplateColumnиспользуйте aCellTemplateВот так:<DataTemplate> <!--Substitute the TextBlock by the actual cell content, but don't drop VerticalAlignment--> <TextBlock VerticalAlignment="Center" Text="{Binding Text}"/> </DataTemplate>Для
DataGridTextColumn, setElementStyle:<Style> <Setter Property="FrameworkElement.VerticalAlignment" Value="Center"/> </Style>Я пробовал это на
DataGridTextColumn, но свойство от его родителяDataGridBoundColumn, так что должно работать дляDataGridCheckBoxColumnиDataGridHyperlinkColumnтакже.Обновление 2
Кстати, Есть еще одно решение.