WPF Layout engine
V minulém článku jsme se věnovali stylům a jejich použití ve WPF aplikaci. V dnešním článku se pak podíváme na to, jakým způsobem zajistit rozvržení jednotlivých prvků v okně aplikace.
WPF panely
Abychom mohli snadno umisťovat jednotlivé prvky uživatelského rozhraní do okna, nabízí nám WPF celou řadu různých panelů, které zjednodušují návrh uživatelského rozhraní a zabezpečí nám změnu velikosti a uspořádání prvků jak při změně velikosti okna, tak i při změně rozlišení obrazovky nebo DPI.
Co je vlastně rozložení, nebo-li layout a jakým způsobem nám mohou pomoci jednotlivé typy panelů, abychom dosáhli požadovaného cíle. WPF okno si můžeme rozdělit na jednotlivé regiony, které můžeme libovolně vnořovat a dosáhnout tak kýženého výsledku. Každý region pak představuje panel určitého typu a tento panel rozhoduje, jak uspořádá jednotlivé prvky v něm umístěné s ohledem k ostatním vloženým prvkům. Panel tak přebírá plnou odpovědnost nad tím, jakou velikost budou v něm jednotlivé prvky mít a zajišťuje jejich umístění.
Uživatelské rozhraní se tak stane flexibilní a vývojář je tak osvobozen od toho, aby znal přesnou velikost nebo umístění.
Práce s panely
Kdybychom měli u každého prvku, který můžeme vkládat do panelu zajistit všechny vlastnosti, které ten který panel požaduje, měli bychom asi neúměrně - na vlastnosti - bohaté prvky a jen omezený počet panelů, které můžeme použít. Prvky proto neobsahují vlastnosti jako Left nebo Top, ale využívá se tzv. Attached properties. Jak už sám název napovídá, tyto vlastnosti jsou připojeny k jednotlivým prvkům a každý panel pak zná a využívá tyto hodnoty, nastavené vývojářem nebo designerem.
Typickou ukázkou tak může být například nastavení hodnoty
Grid.Column="3"
která informuje nadřazený panel o tom, že tento prvek má být umístěn ve čtvrtém sloupci (počítáno od nuly). V případě, že prvek nemá nastavenu žádnou hodnotu, kterou vyžaduje obalující panel, potom se nastavuje hodnota výchozí. Většinou se jedná o nejpoužívanější hodnotu.
Vestavěné panely
Ve WPF existuje několik vestavěných panelů, které můžeme využít při kompozici našeho uživatelského rozhraní. Jsou jimi:
- Canvas – nabízí možnost absolutního pozicování jednotlivých prvků
- StackPanel – potomci v tomto panelu jsou vrstveny horizontálně případně vertikálně
- WrapPanel – vrstvení prvků je zajištěno v řadě nebo ve sloupcích
- DockPanel – pomocí tohoto panelu “přilepíme” jednotlivé potomky k některé straně potomka, případně k hraně obdobně umístěného potomka
- Grid – vytvoří řádky a sloupce pro jednotlivé potomky
Jak jsem již uvedl výše, toto není konečný výčet panelů. Tyto panely můžeme dále rozšiřovat, případně si napsat panel vlastní, který bude přesně plnit naše potřeby.
Závěrem
V tomto článku jsme si ukázali, jakým způsobem a jaké prvky je možné využít pro rozvržení jednotlivých prvků pro kompozici uživatelského rozhraní.
Komentáře