次の方法で共有


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

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

DataGrid のサイズ変更

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

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

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

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

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

大規模なデータ セットを操作するときにこれらの問題を回避するには、HeightDataGridを具体的に設定するか、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では、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 に設定します。

こちらも参照ください