DataGrid 控制項中的調整大小選項
各種選項可用來控制 DataGrid 本身的大小。 DataGrid 以及 DataGrid 中的個別資料列和資料行,可以設定為自動調整大小,或設定為特定值。 根據預設,DataGrid 會放大和縮小,以符合其內容的大小。
調整 DataGrid 的大小
使用 [自動重設大小] 時的注意事項
根據預設,Height 的 Width 和 DataGrid 屬性會設定為 Double.NaN (XAML 中的 [Auto
]),而 DataGrid 會調整為其內容的大小。
放置在未限制其子項目大小的容器內時,例如 Canvas 或 StackPanel,DataGrid 將會縮放超過容器的可見範圍,而且不會顯示捲軸。 此條件同時具有可用性和效能影響。
繫結至資料集時,如果 Height 的 DataGrid 不受限制,它會繼續為繫結資料集中的每個資料項目新增一個資料列。 當新增資料列時,這可能會導致 DataGrid 放大到應用程式可見範圍之外。 在此情況下,DataGrid 不會顯示捲軸,因為其 Height 會繼續放大以容納新的資料列。
系統會針對 DataGrid 中的每個資料列建立物件。 如果您使用大型資料集,而且允許 DataGrid 自動調整大小,則建立大量物件可能會影響應用程式的效能。
若要避免當您使用大型資料集時發生這些問題,建議您特別設定 Height 的 DataGrid,或將它放在將限制其 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 屬性來指定 DataGrid.RowHeight 中所有資料列的高度。 使用者可以拖曳資料列標頭分隔線來變更資料列高度。
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
。