WPF — Элементы управления WPF — Форматирование и стилизация столбцов DataGrid
Форматировать DataGridTextColumn можно таким же способом, что и элемент TextBlock, устанавливая свойства Foreground, FontFamily, FontSize, FontStyle и FontWeight. Однако DataGridTextColumn не поддерживает абсолютно все свойства, доступные у TextBlock. Например, в нем нельзя установить такое часто применяемое свойство, как Wrapping, чтобы создать столбец, отображающий несколько строк текста. Вместо этого понадобится использовать свойство ElementStyle.
По существу свойство ElementStyle позволяет применить стиль к соответствующему элементу внутри ячейки DataGrid. В случае простого DataGridTextColumn этим элементом будет TextBlock, в случае DataGridCheckBoxColumn — флажок, а в случае DataGridTemplateColumn — любой элемент, который был создан в шаблоне данных.
Ниже приведен простой стиль, включающий перенос текста в столбце:
Чтобы текст переносился, необходимо увеличить высоту строк. К сожалению, элемент управления DataGrid не способен изменять свои размеры так же гибко, как это умеют делать контейнеры компоновки в WPF. Поэтому потребуется задать фиксированную высоту для строк с помощью свойства DataGrid.RowHeight. Эта высота будет применяться ко всем строкам, каким бы ни был объем размещенного внутри них содержимого. На рисунке показан пример, в котором высота строк установлена в 70 единиц:
Чтобы применить один и тот же стиль к множеству столбцов, можно определить его в коллекции Resources и затем ссылаться на него в каждом столбце с использованием StaticResource.
С помощью свойства EditingElementStyle стиль применяется к элементу, который задействован при редактировании столбца. В случае DataGridTextColumn этим элементом будет TextBox.
ElementStyle и ElementEditingStyle и свойства столбцов предоставляют способ форматирования всех ячеек в любом конкретном столбце. Однако в некоторых случаях необходимо применить параметры форматирования к каждой ячейке в каждом столбце. Простейший способ сделать это заключается в конфигурировании стиля для свойства DataGrid.RowStyle. Кроме того, DataGrid имеет небольшой набор дополнительных свойств, которые позволяют форматировать другие части сетки, такие как заголовки столбцов и заголовки строк. Все свойства перечислены ниже:
ColumnHeaderStyle
Элемент TextBlock, используемый для отображения заголовков столбцов в верхней части сетки
RowHeaderStyle
Элемент TextBlock, используемый для отображения заголовков строк
DragIndicatorStyle
Элемент TextBlock, используемый для отображения заголовка столбца во время его перетаскивания в новую позицию
RowStyle
Элемент TextBlock, используемый для отображения обычных строк (строк в столбцах, которые не были настроены специальным образом через свойство ElementStyle соответствующего столбца)
Пытаюсь сделать перенос текста на новую строку в зависимости от ширины колонки в datagrid. Получилось, но в ячейках отображается System.Data.DataRowView. Что я делаю не так?
Данные в таблицу загружаю из БД следующим образом:
- Вопрос задан более двух лет назад
- 864 просмотра
Разобрался сам, в Binding нужно было еще указать имя колонки.
Привет уважаемым форумчанам,
кто-нибудь может подсказать как заставить DataGridView выводить текст для всех ячеек в колонке с фиксированной шириной:
1. с переносом строк (WordWrap)
2. так чтобы при этом высота каждой строки подстраивалась под объем текста в ячейке этой колонки в этой строке.
Манипуляции с WrapMode, RowHeight и AutoSizeRowsMode нужного результата не дают — текст выводится в одну строку, переноса строк удается добиться только для редактируемой ячейки.
PS использую Visual Studio C# 2005 Express Edition.
Источник: