DataGrid 控件中的调整大小选项
可以使用各种选项来控制 DataGrid 自己调整大小的方式。 DataGrid以及 DataGrid中的单个行和列可以根据其内容自动调整大小,也可以设置为特定值。 默认情况下,DataGrid 将增长和收缩以适应其内容的大小。
调整 DataGrid 大小
使用自动大小调整时的警告
默认情况下,DataGrid 的 Height 和 Width 属性设置为 Double.NaN(XAML 中的“Auto
”),DataGrid 将调整为其内容的大小。
当放置在不限制其子项大小的容器(例如 Canvas 或 StackPanel)内时,DataGrid 将超出容器的可见边界,并且不会显示滚动条。 此条件具有可用性和性能影响。
绑定到数据集时,如果 DataGrid 的 Height 不受限制,它将继续为绑定数据集中的每个数据项添加一行。 这可能会导致在添加行时 DataGrid 超出应用程序的可见边界。 在这种情况下,DataGrid 将不会显示滚动条,因为它的 Height 将继续延伸以适应新行。
为 DataGrid中的每个行创建一个对象。 如果使用大型数据集并允许 DataGrid 自动调整大小,则创建大量对象可能会影响应用程序的性能。
为避免在处理大型数据集时出现这些问题,建议专门设置 DataGrid 的 Height 或将它放置在将限制其 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.Row 或 DataGridHeadersVisibility.All。 默认情况下,将显示行标题,并自动调整其大小以适应其内容。 可以通过设置 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 中的列也可以设置为仅在指定边界内自动调整大小,也可以将列设置为特定大小。 下表显示了可设置为控制列大小的属性。
财产 | 描述 |
---|---|
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.Row 或 DataGridHeadersVisibility.None。 默认情况下,当显示列标题时,它们会自动调整大小以适应其内容。 可以通过设置 DataGrid.ColumnHeaderHeight 属性来为列标题指定特定高度。
使用鼠标调整大小
用户可以通过拖动行或列标题分隔符来调整 DataGrid 行和列的大小。 DataGrid 还支持通过双击行或列标题分隔符自动调整行和列的大小。 若要防止用户调整特定列的大小,请将 DataGridColumn.CanUserResize 属性设置为单个列的 false
。 若要防止用户调整所有列的大小,请将 DataGrid.CanUserResizeColumns 属性设置为 false
。 若要防止用户调整所有行的大小,请将 DataGrid.CanUserResizeRows 属性设置为 false
。