XAML.cz Magazín moderních technologií založených na XAML

WPF Layout engine

Napsáno pro WPF od Jarda Jirava  [19.01.2010]

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

ukládám komentář, vyčkejte prosím..
  1. Buďte první, kdo napíše komentář.

@xamlcz

  • RT @jvanrhyn: XAML, It's a bit like olives. Takes a while to get used to. But once you're used to it. It is actually pretty good. <3 XAML
  • RT @moser_christian: WPF Inspector 0.9.7 is released. It supports .NET 3.5 and 4.0 The project is now open source and available on CodeP ...
  • Jeff Handley oznámil vydání WCF RIA Services v.1.0 SP1 RTM http://bit.ly/gOgckn ke stažení na http://bit.ly/gVAXdK
  • jedna výzva pro Brno. Byl někdo z vás na přednášce o RIA v MS Akvárku? Dejte o sobě vědět. Děkuji
  • také jste uvažovali o tom, že zkusíte na projekt použít Caliburn Micro nebo naopak Prism 4? A co tak obojí, šlo by to nebo ne? Již brzy