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