DataGrid 控制項中的調整大小選項

各種選項可用來控制大小本身的方式 DataGrid 。 中的 DataGrid 、 和 個別資料列和資料行 DataGrid 可以設定為自動調整大小,或可以設定為特定值。 根據預設, DataGrid 將會成長和縮小以符合其內容的大小。

調整 DataGrid 的大小

使用自動調整大小時的注意事項

根據預設, HeightDataGridWidth 屬性會設定為 Double.NaN (「 Auto 」 在 XAML 中),而且 DataGrid 會調整為其內容的大小。

放置在未限制其子系大小的容器內時,例如 CanvasStackPanelDataGrid 將會延伸超過容器的可見界限,而且不會顯示捲軸。 此條件同時具有可用性和效能影響。

系結至資料集時,如果 HeightDataGrid 的 不受限制,它會繼續為系結資料集中的每個資料項目新增一個資料列。 當新增資料列時,這可能會導致 DataGrid 在應用程式可見界限之外成長。 DataGrid在此情況下,不會顯示捲軸, Height 因為它會繼續成長以容納新的資料列。

會針對 中的每個 DataGrid 資料列建立 物件。 如果您正在使用大型資料集,而且允許 DataGrid 自動調整本身大小,則建立大量物件可能會影響應用程式的效能。

若要避免當您使用大型資料集時發生這些問題,建議您特別設定 HeightDataGrid ,或將它放在將限制其 Height 的容器中,例如 GridHeight當 受限制時, 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 的高度可以藉由設定 DataGrid.RowHeight 屬性來指定。 使用者可以拖曳資料列標頭分隔器來變更資料列高度。

DataGrid 資料列標頭

若要顯示資料列標頭, HeadersVisibility 屬性必須設定為 DataGridHeadersVisibility.RowDataGridHeadersVisibility.All 。 根據預設,會顯示資料列標頭,並自動調整大小以符合其內容。 您可以藉由設定 DataGrid.RowHeaderWidth 屬性來指定資料列標頭的特定寬度。

調整資料行和資料行標頭的大小

DataGrid 資料行

DataGrid 使用 和 DataGridLengthUnitType 結構的值 DataGridLength 來指定絕對或自動調整大小模式。

下表顯示 結構所提供的 DataGridLengthUnitType 值。

名稱 描述
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 行也可以設定為只在指定的界限內自動調整大小,或資料行可以設定為特定大小。 下表顯示可設定為控制資料行大小的屬性。

屬性 說明
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.CanUserResizefalse 。 若要防止使用者調整所有資料行的大小,請將 屬性設定 DataGrid.CanUserResizeColumnsfalse 。 若要防止使用者調整所有資料列的大小,請將 屬性設定 DataGrid.CanUserResizeRowsfalse

另請參閱