DataGrid 控件中的大小调整选项

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

调整 DataGrid 的大小

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

默认情况下,HeightWidthDataGrid 属性 设置为 Double.NaN (在 XAML 中为"Auto"),而 DataGrid 会调整为其内容的大小。

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

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

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

为了避免在处理大型数据集时出现这些问题,建议具体设定Height 或将其置于限制DataGrid的容器中,例如HeightGridHeight受限制时,DataGrid将仅创建适合指定Height空间的行,并根据需要回收这些行以显示新数据。

设置 DataGrid 大小

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

资产 DESCRIPTION
Height 设置DataGrid的特定高度。
MaxHeight 设置DataGrid的高度上限。 它将垂直生长,直到达到此高度。
MinHeight 设置DataGrid高度的下限。 DataGrid 将持续垂直收缩,直到达到此高度。
Width DataGrid 设置特定宽度。
MaxWidth 设置为 DataGrid 宽度的上限。 DataGrid 将水平增长,直至达到这个宽度。
MinWidth 设置DataGrid宽度的下限。 DataGrid 将水平收缩,直到达到这个宽度。

调整行和行标题的大小

DataGrid 行

默认情况下,DataGrid行的Height属性设置为Double.NaN(在XAML中为“Auto”),行高度将扩展到其内容的大小。 可以通过设置DataGrid属性来指定所有DataGrid.RowHeight行的高度。 用户可以通过拖动行标题分隔符来更改行高。

DataGrid 行标题

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

调整列和列标题的大小

DataGrid 表格列

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

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

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

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

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

默认情况下,属性DataGrid.ColumnWidth设置为SizeToHeader,并且属性DataGridColumn.Width设置为Auto。当大小调整模式设置为AutoSizeToCells时,列将增长到其最宽可见内容的宽度。 滚动时,如果大于当前列大小的内容滚动到视图中,这些大小调整模式将导致列展开。 内容被滚动出视图后,该列不会发生收缩。

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

使用鼠标调整大小

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

另请参阅