Možnosti velikosti v ovládacím prvku DataGrid

K dispozici jsou různé možnosti, jak kontrolovat velikost DataGrid. Jednotlivé DataGridřádky a sloupce v sadě DataGridmohou být nastaveny tak, aby automaticky odpovídaly jejich obsahu, nebo lze nastavit na konkrétní hodnoty. Ve výchozím nastavení se DataGrid zvětší nebo zmenší podle velikosti svého obsahu.

Určení velikosti DataGridu

Upozornění při používání automatického nastavení velikosti

Ve výchozím nastavení jsou vlastnosti Height a Width u DataGrid nastaveny na Double.NaN ("Auto" v XAML) a DataGrid se upraví podle velikosti svého obsahu.

Při umístění uvnitř kontejneru, který neomezuje velikost svých dětí, jako je například Canvas nebo StackPanel, DataGrid se roztáhne za viditelné hranice kontejneru a posuvníky se nezobrazí. Tato podmínka má vliv na použitelnost i výkon.

Pokud je vázána na datovou sadu, pokud HeightDataGrid není omezeno, bude i nadále přidávat řádek pro každou položku dat v vázané sadě dat. To může způsobit, že se DataGrid zvětší mimo viditelné hranice vaší aplikace při přidávání řádků. V DataGrid tomto případě se posuvníky nezobrazí, protože jeho Height velikost bude nadále růst tak, aby vyhovovala novým řádkům.

Objekt je vytvořen pro každý řádek v objektu DataGrid. Pokud pracujete s velkou sadou dat a umožníte DataGrid automaticky upravit svou velikost, může vytvoření velkého počtu objektů ovlivnit výkon vaší aplikace.

Pokud se chcete těmto problémům vyhnout při práci s velkými datovými sadami, doporučujeme konkrétně nastavit HeightDataGrid nebo je umístit do kontejneru, který omezí jejich Height velikost, například Grid. Pokud je omezení Height omezeno, vytvoří pouze řádky, DataGrid které se vejdou do zadaného objektu Height, a podle potřeby tyto řádky recyklují, aby se zobrazila nová data.

Nastavení velikosti DataGridu

Lze DataGrid nastavit na automatickou velikost v rámci zadaných hranic nebo DataGrid lze nastavit na určitou velikost. V následující tabulce jsou uvedeny vlastnosti, které lze nastavit tak, aby řídily DataGrid velikost.

Vlastnictví Popis
Height Nastaví konkrétní výšku pro DataGrid.
MaxHeight Nastaví horní hranici výšky DataGrid. Bude DataGrid růst svisle, dokud nedosáhne tuto výšku.
MinHeight Nastaví dolní mez výšky DataGrid. DataGrid se bude zmenšovat svisle, dokud nedosáhne této výšky.
Width Nastaví konkrétní šířku pro DataGrid.
MaxWidth Nastaví horní mez šířky DataGrid. Bude DataGrid růst vodorovně, dokud nedosáhne této šířky.
MinWidth Nastaví dolní mez šířky DataGrid. Zmenší se DataGrid vodorovně, dokud nedosáhne této šířky.

Změna velikosti řádků a záhlaví řádků

Řádky DataGridu

Ve výchozím nastavení DataGrid je vlastnost řádku Height nastavena na Double.NaN ("Auto" v XAML) a výška řádku se rozšíří na velikost jejího obsahu. Výšku všech řádků v objektu DataGrid lze určit nastavením DataGrid.RowHeight vlastnosti. Uživatelé mohou změnit výšku řádku přetažením rozdělovačů záhlaví řádku.

Řádková záhlaví DataGrid

Chcete-li zobrazit záhlaví řádků, vlastnost musí být nastavena na HeadersVisibility nebo DataGridHeadersVisibility.Row. Ve výchozím nastavení se záhlaví řádků zobrazují a automaticky se přizpůsobí jejich obsahu. Nastavením vlastnosti DataGrid.RowHeaderWidth lze záhlaví řádků nastavit na konkrétní šířku.

Nastavení velikosti sloupců a záhlaví sloupců

Sloupce DataGrid

DataGrid používá hodnoty struktury DataGridLength a DataGridLengthUnitType k určení absolutní nebo automatické režimy velikosti.

Následující tabulka ukazuje hodnoty poskytované strukturou DataGridLengthUnitType .

Název Popis
Auto Výchozí režim automatického nastavení velikosti formátuje DataGrid sloupce na základě obsahu záhlaví buněk i sloupců.
SizeToCells Režim automatické velikosti založený na buňkách upravuje DataGrid sloupce na základě obsahu buněk ve sloupci, s výjimkou záhlaví sloupců.
SizeToHeader Režim automatické velikosti založený na záhlaví formátuje DataGrid sloupce pouze na základě obsahu záhlaví sloupců.
Pixel Režim nastavení velikosti založený na pixelech formátuje DataGrid sloupce na základě zadané číselné hodnoty.
Star Režim velikosti hvězd se používá k distribuci dostupného prostoru váženými proporcemi.

V jazyce XAML jsou hvězdicové hodnoty vyjádřeny jako n*, kde n představuje číselnou hodnotu. 1* je ekvivalentní *. Pokud by například dva sloupce v DataGrid měly šířky * a 2*, první sloupec by získal jednu část dostupného prostoru a druhý sloupec dvě části.

Třídu DataGridLengthConverter lze použít k převodu dat mezi číselnými nebo řetězcovými hodnotami a DataGridLength hodnotami.

Ve výchozím nastavení je vlastnost DataGrid.ColumnWidth nastavena na SizeToHeader, a vlastnost DataGridColumn.Width nastavena na Auto. Když je režim nastavení velikosti nastaven na Auto nebo SizeToCells, sloupce se zvětší na šířku jejich nejširšího viditelného obsahu. Při posouvání tyto režimy změny velikosti způsobí rozšíření sloupců, pokud se obsah, který je větší než aktuální velikost sloupce, posune do zobrazení. Sloupec se po posunutí obsahu mimo zobrazení nezmenší.

Sloupce ve sloupcích DataGrid lze také nastavit tak, aby se automaticky nastavily jenom v rámci zadaných hranic, nebo sloupce lze nastavit na určitou velikost. V následující tabulce jsou uvedeny vlastnosti, které lze nastavit tak, aby řídily velikosti sloupců.

Vlastnictví Popis
DataGrid.MaxColumnWidth Nastaví horní mez pro všechny sloupce v DataGrid.
DataGridColumn.MaxWidth Nastaví horní mez pro jednotlivé sloupce. Přepíše DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Nastaví dolní mez pro všechny sloupce v objektu DataGrid.
DataGridColumn.MinWidth Nastaví dolní mez pro jednotlivé sloupce. Přepíše DataGrid.MinColumnWidth.
DataGrid.ColumnWidth Nastaví určitou šířku pro všechny sloupce v sadě DataGrid.
DataGridColumn.Width Nastaví určitou šířku pro jednotlivé sloupce. Přepíše DataGrid.ColumnWidth.

Záhlaví sloupců DataGrid

Ve výchozím nastavení se zobrazují záhlaví sloupců DataGrid. Chcete-li skrýt záhlaví sloupců, musí být vlastnost HeadersVisibility nastavena na DataGridHeadersVisibility.Row nebo DataGridHeadersVisibility.None. Ve výchozím nastavení, když jsou zobrazena záhlaví sloupců, automaticky se přizpůsobí jejich obsahu. Výšku záhlaví sloupců lze nastavit konkrétně pomocí vlastnosti DataGrid.ColumnHeaderHeight.

Změna velikosti pomocí myši

Uživatelé můžou změnit velikost DataGrid řádků a sloupců přetažením rozdělovačů záhlaví řádků nebo sloupců. Podporuje DataGrid také automatickou změnu velikosti řádků a sloupců poklikáním na oddělovač záhlaví řádků nebo sloupců. Pokud chcete zabránit uživateli ve změně velikosti konkrétních sloupců, nastavte vlastnost DataGridColumn.CanUserResize pro jednotlivé sloupce na false. Chcete-li uživatelům zabránit ve změně velikosti všech sloupců, nastavte DataGrid.CanUserResizeColumns vlastnost na false hodnotu. Chcete-li zabránit uživatelům měnit velikost všech řádků, nastavte vlastnost DataGrid.CanUserResizeRows na hodnotu false.

Viz také