Выравнивание текста в DataGridTextColumn по вертикали. Границы ячейки начинают выравниваться вокруг текста

186
19 августа 2018, 19:10

Делаю выравнивание текста в DataGridTextColumn по вертикали

<DataGridTextColumn Binding="{Binding Path=Name}"
                    Header="..."
                    SortDirection="Ascending">
    <DataGridTextColumn.CellStyle>
        <Style>
            <Setter Property="FrameworkElement.VerticalAlignment" Value="Center"/>
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

В результате границы ячейки тоже мигрируют на середину Как сделать так, чтобы границы ячейки не рисовались по центру ячейки?

Answer 1

К сожалению, стандартный шаблон ячейки таков, что стилем это поведение не исправить, придется изменять шаблон (благо хотя бы там изменения будут простыми), для этого кликните в дизайнере правой кнопкой по 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>

Это более предпочтительный и универсальный метод.

READ ALSO
Дизайнер окон WPF

Дизайнер окон WPF

После создания WPF-приложения не отображается дизайнер окон, есть только файл с разметкой xamlКак открыть дизайнер?

217
Как вывести диалоговое окно в сервисе?

Как вывести диалоговое окно в сервисе?

Есть служба, написанная мнойВ сервисе я использовал стороннюю библиотеку

186
Сериализация/Десериализация Dictionary&lt;string,string&gt;

Сериализация/Десериализация Dictionary<string,string>

Есть некий внешний сервис, отдающий такой объект:

191
Как узнать, как долго будут вычисляться функция из long.MaxValue шагов?

Как узнать, как долго будут вычисляться функция из long.MaxValue шагов?

Час назад я написал такой код, чтобы проверить правильность решенной мною задачи:

196