Форматирование и стилизация столбцов DataGrid
49WPF --- Элементы управления WPF --- Форматирование и стилизация столбцов DataGrid
Форматировать DataGridTextColumn можно таким же способом, что и элемент TextBlock, устанавливая свойства Foreground, FontFamily, FontSize, FontStyle и FontWeight. Однако DataGridTextColumn не поддерживает абсолютно все свойства, доступные у TextBlock. Например, в нем нельзя установить такое часто применяемое свойство, как Wrapping, чтобы создать столбец, отображающий несколько строк текста. Вместо этого понадобится использовать свойство ElementStyle.
По существу свойство ElementStyle позволяет применить стиль к соответствующему элементу внутри ячейки DataGrid. В случае простого DataGridTextColumn этим элементом будет TextBlock, в случае DataGridCheckBoxColumn — флажок, а в случае DataGridTemplateColumn — любой элемент, который был создан в шаблоне данных.
Ниже приведен простой стиль, включающий перенос текста в столбце:
<DataGridTextColumn Header="Описание" Binding="{Binding Path=Description}" Width="350">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
Чтобы текст переносился, необходимо увеличить высоту строк. К сожалению, элемент управления DataGrid не способен изменять свои размеры так же гибко, как это умеют делать контейнеры компоновки в WPF. Поэтому потребуется задать фиксированную высоту для строк с помощью свойства DataGrid.RowHeight. Эта высота будет применяться ко всем строкам, каким бы ни был объем размещенного внутри них содержимого. На рисунке показан пример, в котором высота строк установлена в 70 единиц:

Чтобы применить один и тот же стиль к множеству столбцов, можно определить его в коллекции Resources и затем ссылаться на него в каждом столбце с использованием StaticResource.
С помощью свойства EditingElementStyle стиль применяется к элементу, который задействован при редактировании столбца. В случае DataGridTextColumn этим элементом будет TextBox.
ElementStyle и ElementEditingStyle и свойства столбцов предоставляют способ форматирования всех ячеек в любом конкретном столбце. Однако в некоторых случаях необходимо применить параметры форматирования к каждой ячейке в каждом столбце. Простейший способ сделать это заключается в конфигурировании стиля для свойства DataGrid.RowStyle. Кроме того, DataGrid имеет небольшой набор дополнительных свойств, которые позволяют форматировать другие части сетки, такие как заголовки столбцов и заголовки строк. Все свойства перечислены ниже:
- ColumnHeaderStyle
Элемент TextBlock, используемый для отображения заголовков столбцов в верхней части сетки
- RowHeaderStyle
Элемент TextBlock, используемый для отображения заголовков строк
- DragIndicatorStyle
Элемент TextBlock, используемый для отображения заголовка столбца во время его перетаскивания в новую позицию
- RowStyle
Элемент TextBlock, используемый для отображения обычных строк (строк в столбцах, которые не были настроены специальным образом через свойство ElementStyle соответствующего столбца)