Параметры изменения размеров элемента управления DataGrid

Существуют различные варианты для управления изменением размера DataGrid. Для DataGrid и отдельных строк и столбцов в DataGrid можно настроить фиксированный размер или изменение размера в соответствии с содержимым. По умолчанию размер DataGrid будет увеличиваться и уменьшаться в соответствии с содержимым.

Изменение размера элемента управления DataGrid

Предупреждения при использовании автоматического изменения размера

По умолчанию для свойств Height и Width объекта DataGrid устанавливается значение Double.NaN ("Auto" в XAML), и размер DataGrid изменяется в соответствии с содержимым.

При размещении внутри контейнера, который не ограничивает размер дочерних элементов, например, Canvas или StackPanel, элемент управления DataGrid выйдет за видимые границы контейнера и полосы прокрутки не будут отображаться. Это влияет как на удобство использования, так и на производительность.

При привязке к набору данных, если свойство Height объекта DataGrid не ограничено, этот объект продолжит добавлять строки для каждого элемента данных в наборе данных привязки. Это может привести к выходу элемента управления DataGrid за видимые границы приложения по мере добавления строк. В этом случае полосы прокрутки в DataGrid отображаться не будут, так как свойство Height продолжит увеличиваться, чтобы вместить новые строки.

Для каждой строки в DataGrid создается объект. Если вы работаете с большим набором данных и позволяете элементу управления DataGrid масштабироваться автоматически, создание большого количества объектов может повлиять на производительность приложения.

Чтобы избежать этих проблем при работе с большими наборами данных, рекомендуется явным образом задать свойство Height объекта DataGrid или поместить этот объект в контейнер, который будет ограничивать его свойство Height, например, Grid. Если свойство Height ограничено, в DataGrid будут создаваться только строки, которые помещаются в элемент управления с заданным свойством Height, и для отображения новых данных эти строки будут перезаписываться.

Установка размера элемента управления DataGrid

Для элемента управления DataGrid можно настроить автоматическое изменение размера в заданных границахDataGrid или фиксированный размер. В таблице ниже приведены свойства, которые можно задать для управления размером DataGrid.

Свойство Description
Height Задает указанную высоту для элемента управления DataGrid.
MaxHeight Задает верхнюю границу для высоты элемента управления DataGrid. Элемент управления DataGrid будет увеличиваться по вертикали, пока не достигнет этой высоты.
MinHeight Задает нижнюю границу для высоты элемента управления DataGrid. Элемент управления DataGrid будет уменьшаться по вертикали, пока не достигнет этой высоты.
Width Задает указанную ширину для элемента управления DataGrid.
MaxWidth Задает верхнюю границу для ширины элемента управления DataGrid. Элемент управления DataGrid будет увеличиваться по горизонтали, пока не достигнет этой ширины.
MinWidth Задает нижнюю границу для ширины элемента управления DataGrid. Элемент управления DataGrid будет уменьшаться по горизонтали, пока не достигнет этой ширины.

Изменение размера строк и заголовков строк

Строки элемента управления DataGrid

По умолчанию для свойства Height объекта DataGrid строки устанавливается значение Double.NaN ("Auto" в XAML), и высота строки будет увеличиваться в соответствии с содержимым. Чтобы указать высоту всех строк в DataGrid, задайте свойство DataGrid.RowHeight. Пользователи могут изменить высоту строки, перетащив разделители заголовков строк.

Заголовки строк элемента управления DataGrid

Чтобы отобразить заголовки строк, задайте значение DataGridHeadersVisibility.Row или DataGridHeadersVisibility.All для свойства HeadersVisibility. По умолчанию заголовки строк отображаются и автоматически масштабируются в соответствии с содержимым. Чтобы задать фиксированную ширину для заголовков строк, установите свойство DataGrid.RowHeaderWidth.

Изменение размера столбцов и заголовков столбцов

Столбцы элемента управления DataGrid

Элемент управления DataGrid использует значения DataGridLength и структуру DataGridLengthUnitType, чтобы задать фиксированный размер или автоматическое изменение размера.

В следующей таблице приведены значения, предоставляемые структурой DataGridLengthUnitType.

Имя Описание
Auto В режиме автоматического изменения размера по умолчанию размер столбцов DataGrid задается на основе содержимого ячеек и заголовков столбцов.
SizeToCells В режиме автоматического изменения размера на основе ячеек размер столбцов DataGrid задается на основе содержимого ячеек в столбцах, без включения заголовков столбцов.
SizeToHeader В режиме автоматического изменения размера на основе заголовков размер столбцов DataGrid задается на основе только заголовков столбцов.
Pixel В режиме изменения размера на основе пикселей размер столбцов DataGrid задается на основе указанного числового значения.
Star Режим звезды используется для распределения доступного размера по взвешенным пропорциям.

В XAML значения звезды представлены как n*, где n представляет числовое значение. 1* эквивалентно *. Например, если два столбца в DataGrid имеют ширину * и 2*, первый столбец получит одну часть доступного пространства, а второй — две части доступного пространства.

Класс DataGridLengthConverter может использоваться для преобразования данных между числовыми или строковыми значениями и значениями DataGridLength.

По умолчанию для свойства DataGrid.ColumnWidth устанавливается значение SizeToHeader, а для свойства DataGridColumn.Width устанавливается значение Auto. В режиме изменения размера Auto или SizeToCells ширина столбца будет увеличиваться до максимальной ширины отображаемого содержимого. При прокрутке в этих режимах изменения размера столбцы будут расширяться, если в область окна попадает содержимое, размер которого превышает текущую ширину столбца. После исчезновения содержимого из области окна столбец не будет сжиматься.

Для элемента управления DataGrid также можно настроить автоматическое изменение размера столбцов только в заданных границах или фиксированный размер столбцов. В таблице ниже приведены свойства, которые можно задать для управления размером столбцов.

Свойство Description
DataGrid.MaxColumnWidth Задает верхнюю границу для всех столбцов в элементе управления DataGrid.
DataGridColumn.MaxWidth Задает верхнюю границу для отдельного столбца. Переопределяет DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Задает нижнюю границу для всех столбцов в элементе управления DataGrid.
DataGridColumn.MinWidth Задает нижнюю границу для отдельного столбца. Переопределяет DataGrid.MinColumnWidth.
DataGrid.ColumnWidth Задает указанную ширину для всех столбцов в элементе управления DataGrid.
DataGridColumn.Width Задает указанную ширину для отдельного столбца. Переопределяет DataGrid.ColumnWidth.

Заголовки столбцов элемента управления DataGrid

По умолчанию в элементе управления DataGrid отображаются заголовки столбцов. Чтобы скрыть заголовки столбцов, задайте значение DataGridHeadersVisibility.Row или DataGridHeadersVisibility.None для свойства HeadersVisibility. По умолчанию когда заголовки строк отображаются, они автоматически масштабируются в соответствии с содержимым. Чтобы задать фиксированную высоту для заголовков столбцов, установите свойство DataGrid.ColumnHeaderHeight.

Изменение размера с помощью мыши

Пользователи могут изменять размер строк и столбцов DataGrid, перетаскивая разделители заголовков строк или столбцов. Элемент управления DataGrid также поддерживает автоматическое изменение размера строк и столбцов путем двойного щелчка по разделителю заголовка строки или столбца. Чтобы запретить пользователю изменять размер определенных столбцов, задайте для свойства DataGridColumn.CanUserResize значение false для конкретных столбцов. Чтобы запретить пользователям изменять размер всех столбцов, задайте для свойства DataGrid.CanUserResizeColumns значение false. Чтобы запретить пользователям изменять размер всех строк, задайте для свойства DataGrid.CanUserResizeRows значение false.

См. также