次の方法で共有


DataGrid コントロールのサイズ変更オプション

DataGrid 自体のサイズを制御するには、さまざまなオプションを使用できます。 DataGrid、および DataGrid内の個々の行と列は、その内容に合わせて自動的にサイズを設定したり、特定の値に設定したりできます。 既定では、DataGrid はコンテンツのサイズに合わせて拡大および縮小されます。

DataGrid のサイズ変更

自動サイズ設定を使用する場合の注意

既定では、DataGridHeight プロパティと Width プロパティは Double.NaN (XAML では "Auto" ) に設定され、DataGrid はその内容のサイズに合わせて調整されます。

CanvasStackPanelなど、子のサイズを制限しないコンテナー内に配置すると、DataGrid はコンテナーの可視境界を超えて拡張され、スクロール バーは表示されません。 この状態は、使いやすさとパフォーマンスの両方に影響します。

データ セットにバインドされている場合、DataGridHeight が制限されていない場合、バインドされたデータ セット内の各データ項目の行が引き続き追加されます。 これにより、行が追加されると、DataGrid がアプリケーションの可視境界外に拡大する可能性があります。 この場合、DataGrid にはスクロール バーは表示されません。新しい行に合わせて Height が拡大し続けるからです。

DataGridの各行に対してオブジェクトが作成されます。 大規模なデータ セットを操作していて、DataGrid 自体のサイズを自動的に設定できる場合、多数のオブジェクトを作成すると、アプリケーションのパフォーマンスに影響する可能性があります。

大規模なデータ セットを操作するときにこれらの問題を回避するには、DataGridHeight を具体的に設定するか、Gridなどの Heightを制限するコンテナーに配置することをお勧めします。 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 では、DataGridLengthDataGridLengthUnitType 構造体の値を使用して、絶対サイズ設定モードまたは自動サイズ変更モードを指定します。

次の表は、DataGridLengthUnitType 構造体によって提供される値を示しています。

名前 説明
Auto セルと列ヘッダーの両方の内容に基づいて、デフォルトの自動サイズ指定モードでは列が DataGrid サイズされます。
SizeToCells 列内のセルの内容に基づいて、列 DataGrid のサイズを調整するセルベースの自動サイズ変更モードは、列ヘッダーを含みません。
SizeToHeader ヘッダーベースの自動サイズ変更モードでは、列ヘッダーの内容のみに基づいて列 DataGrid サイズが設定されます。
Pixel ピクセルベースのサイズ変更モードでは、指定された数値に基づいて列 DataGrid のサイズが決定されます。
Star スター サイズ設定モードは、使用可能な領域を加重比率で分散するために使用されます。

XAML では、スター値は n* で表され、n は数値を表します。 1* は *に相当します。 たとえば、DataGrid の 2 つの列の幅が * と 2* の場合、最初の列は使用可能な領域の 1 つの部分を受け取り、2 番目の列は使用可能な領域の 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に設定します。

関連項目