Делаю выравнивание текста в DataGridTextColumn по вертикали
<DataGridTextColumn Binding="{Binding Path=Name}"
Header="..."
SortDirection="Ascending">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="FrameworkElement.VerticalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
В результате границы ячейки тоже мигрируют на середину Как сделать так, чтобы границы ячейки не рисовались по центру ячейки?
К сожалению, стандартный шаблон ячейки таков, что стилем это поведение не исправить, придется изменять шаблон (благо хотя бы там изменения будут простыми), для этого кликните в дизайнере правой кнопкой по DataGrid и выберите Edit Additional Templates-Edit CellStyle-Edit a Copy...
В добавившийся стандартный стиль в шаблоне (<Setter Property="Template">) найдите ContentPresenter представляющий содержимое ячейки и установите ему VerticalAlignment="Center"
Если вы хотите иметь возможность настраивать выравнивание по разному в разных столбцах, то можно вместо явного указания значения выполнить привязку: VerticalAlignment="{TemplateBinding VerticalContentAlignment}", тогда в столбце делаем так:
<DataGridTextColumn Header="A" Binding="{Binding A}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource DataGridCellStyle1}">
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
Это более предпочтительный и универсальный метод.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей