Поделиться через


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

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

Настройка размера DataGrid

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

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

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

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

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

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

Настройка размера DataGrid

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

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

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

Строки DataGrid

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

Заголовки строк «DataGrid»

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

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

Столбцы DataGrid

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

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

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

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

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

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

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

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

Заголовки столбцов DataGrid

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

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

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

См. также