Sdílet prostřednictvím


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

K dispozici jsou různé možnosti pro řízení DataGrid velikosti samotné. 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í DataGrid se velikost jeho obsahu zvětší a zmenší.

Určení velikosti DataGridu

Upozornění při použití automatické velikosti

Ve výchozím nastavení Height jsou vlastnosti a Width vlastnosti DataGrid nastaveny na Double.NaN ("Auto" v XAML) a DataGrid upraví se na velikost jeho obsahu.

Při umístění uvnitř kontejneru, který neomezuje velikost podřízených položek, jako CanvasStackPanelje například nebo , DataGrid se roztáhne za viditelnými hranicemi 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 DataGrid zvětšení mimo viditelné hranice aplikace při přidá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 automatické velikosti samotné, 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, abyste ho konkrétně nastavili Height nebo umístili do kontejneru, který omezí jeho Heightvelikost , například Grid.DataGrid 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.

Vlastnost Popis
Height Nastaví pro určitou výšku DataGrid.
MaxHeight Nastaví horní mez výšky DataGrid. Bude DataGrid růst svisle, dokud nedosáhne této výšky.
MinHeight Nastaví dolní mez výšky DataGrid. Zmenší DataGrid se svisle, dokud nedosáhne této výšky.
Width Nastaví pro určitou šířku 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.

Záhlaví řádků DataGrid

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

Změna velikosti sloupců a záhlaví sloupců

Sloupce DataGrid

Používá DataGrid hodnoty DataGridLength struktury DataGridLengthUnitType k určení absolutních nebo automatických režimů 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ňce formátuje DataGrid sloupce na základě obsahu buněk ve sloupci, nikoli 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 šířce * a 2*, první sloupec by obdržel jednu část dostupného prostoru a druhý sloupec by obdržel dvě části dostupného prostoru.

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 nastavena DataGrid.ColumnWidth na SizeToHeadera vlastnost je nastavena DataGridColumn.Width na Auto. Pokud je režim nastavení velikosti nebo AutoSizeToCells, sloupce se zvětší na šířku jejich nejširšího viditelného obsahu. Při posouvání tyto režimy velikosti způsobí rozbalení 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ů.

Vlastnost Popis
DataGrid.MaxColumnWidth Nastaví horní mez pro všechny sloupce v sadě DataGrid.
DataGridColumn.MaxWidth Nastaví horní mez pro jednotlivé sloupce. Přepisy DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Nastaví dolní mez pro všechny sloupce v sadě DataGrid.
DataGridColumn.MinWidth Nastaví dolní mez pro jednotlivé sloupce. Přepisy 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řepisy DataGrid.ColumnWidth.

Záhlaví sloupců DataGrid

Ve výchozím nastavení DataGrid se zobrazují záhlaví sloupců. Chcete-li skrýt záhlaví sloupců, musí být vlastnost nastavena HeadersVisibility na DataGridHeadersVisibility.Row hodnotu nebo DataGridHeadersVisibility.None. Ve výchozím nastavení se při zobrazení záhlaví sloupců automaticky přizpůsobí jejich obsahu. Záhlaví sloupců můžou mít konkrétní výšku DataGrid.ColumnHeaderHeight nastavením vlastnosti.

Změna velikosti myší

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 DataGridColumn.CanUserResize vlastnost na false jednotlivé sloupce. Chcete-li uživatelům zabránit ve změně velikosti všech sloupců, nastavte DataGrid.CanUserResizeColumns vlastnost na falsehodnotu . Chcete-li uživatelům zabránit v změně velikosti všech řádků, nastavte DataGrid.CanUserResizeRows vlastnost na falsehodnotu .

Viz také