DataGrid 控件中的调整大小选项

可以使用各种选项来控制 DataGrid 自己调整大小的方式。 DataGrid以及 DataGrid中的单个行和列可以根据其内容自动调整大小,也可以设置为特定值。 默认情况下,DataGrid 将增长和收缩以适应其内容的大小。

调整 DataGrid 大小

使用自动大小调整时的警告

默认情况下,DataGridHeightWidth 属性设置为 Double.NaN(XAML 中的“Auto”),DataGrid 将调整为其内容的大小。

当放置在不限制其子项大小的容器(例如 CanvasStackPanel)内时,DataGrid 将超出容器的可见边界,并且不会显示滚动条。 此条件具有可用性和性能影响。

绑定到数据集时,如果 DataGridHeight 不受限制,它将继续为绑定数据集中的每个数据项添加一行。 这可能会导致在添加行时 DataGrid 超出应用程序的可见边界。 在这种情况下,DataGrid 将不会显示滚动条,因为它的 Height 将继续延伸以适应新行。

DataGrid中的每个行创建一个对象。 如果使用大型数据集并允许 DataGrid 自动调整大小,则创建大量对象可能会影响应用程序的性能。

为避免在处理大型数据集时出现这些问题,建议专门设置 DataGridHeight 或将它放置在将限制其 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(XAML 中的“Auto”),行高度将扩展到其内容的大小。 可以通过设置 DataGrid.RowHeight 属性来指定 DataGrid 中的所有行的高度。 用户可以通过拖动行标题分隔符来更改行高。

DataGrid 行标题

若要显示行标题,必须将 HeadersVisibility 属性设置为 DataGridHeadersVisibility.RowDataGridHeadersVisibility.All。 默认情况下,将显示行标题,并自动调整其大小以适应其内容。 可以通过设置 DataGrid.RowHeaderWidth 属性来为行标题指定特定的宽度。

调整列和列标题的大小

DataGrid 列

DataGrid 使用 DataGridLengthDataGridLengthUnitType 结构的值来指定绝对或自动调整大小模式。

下表显示了 DataGridLengthUnitType 结构提供的值。

名字 描述
Auto 默认的自动调整大小模式根据单元格和列标题的内容调整 DataGrid 列的大小。
SizeToCells 基于单元格的自动调整模式会根据列中单元格的内容调整 DataGrid 列的大小,不包括列标题。
SizeToHeader 基于标头的自动大小调整模式仅根据列标题的内容调整 DataGrid 列的大小。
Pixel 基于像素的调整大小模式根据提供的数值调整 DataGrid 列的大小。
Star 星型尺寸模式用于根据加权比例分配可用空间。

在 XAML 中,星值表示为 n* ,其中 n 表示数值。 1* 等效于 *。 例如,如果 DataGrid 中的两列的宽度为 * 和 2*,则第一列将收到可用空间的一部分,第二列将接收可用空间的两部分。

DataGridLengthConverter 类可用于在数值或字符串值与 DataGridLength 值之间转换数据。

默认情况下,DataGrid.ColumnWidth 属性设置为 SizeToHeaderDataGridColumn.Width 属性设置为 Auto。当大小调整模式设置为 AutoSizeToCells时,列将增长到其最宽可见内容的宽度。 滚动时,如果滚动到查看范围中的内容超过了当前列的大小,那么这些大小调整模式将使列扩大。 在此内容滚动到查看范围之外后,此列也不会收缩。

DataGrid 中的列也可以设置为仅在指定边界内自动调整大小,也可以将列设置为特定大小。 下表显示了可设置为控制列大小的属性。

财产 描述
DataGrid.MaxColumnWidth 设置 DataGrid 中所有列的上界限。
DataGridColumn.MaxWidth 设置单个列的上限。 重写 DataGrid.MaxColumnWidth
DataGrid.MinColumnWidth 设置 DataGrid中所有列的最低限制。
DataGridColumn.MinWidth 设置单个列的下限。 重写 DataGrid.MinColumnWidth
DataGrid.ColumnWidth 设置 DataGrid中所有列的特定宽度。
DataGridColumn.Width 设置单个列的特定宽度。 重写 DataGrid.ColumnWidth

DataGrid 列标题

默认情况下,DataGrid 列的标题会被显示。 若要隐藏列标题,必须将 HeadersVisibility 属性设置为 DataGridHeadersVisibility.RowDataGridHeadersVisibility.None。 默认情况下,当显示列标题时,它们会自动调整大小以适应其内容。 可以通过设置 DataGrid.ColumnHeaderHeight 属性来为列标题指定特定高度。

使用鼠标调整大小

用户可以通过拖动行或列标题分隔符来调整 DataGrid 行和列的大小。 DataGrid 还支持通过双击行或列标题分隔符自动调整行和列的大小。 若要防止用户调整特定列的大小,请将 DataGridColumn.CanUserResize 属性设置为单个列的 false。 若要防止用户调整所有列的大小,请将 DataGrid.CanUserResizeColumns 属性设置为 false。 若要防止用户调整所有行的大小,请将 DataGrid.CanUserResizeRows 属性设置为 false

另请参阅