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

Odhalení WPF - I.

Napsáno pro WPF od Jarda Jirava  [12.01.2010]

Po velice krátkém úvodu můžeme začít s představováním jednotlivých technologií. Byť nemám rád takovéto úvodníky, které jsou téměř na každém rohu, přeci jen se pokusím uvést vás do této problematiky. Ti, kteří byli na mé přednášce o WPF budou nejspíše vše zde prezentované znát, pro ostatní je to pak první ochutnávka z WPF. Po prokousání se tímto úvodem se pak budu snažit, a třeba nejen já, představit vám postupy, jak tvořit nejen WPF aplikace pomocí jazyka XAML a c#.

Přednosti WPF

WPF se skládá z poměrně obsáhlého API, které obsahuje spoustu namespace a tříd. Zároveň pak přínáší zcela nové koncepty při tvorbě desktopových aplikací.

Komponentní skládání prvků

WPF je založeno na idee skládání jednotlivých elementárních grafických prvků dohromady. Když si představíte třeba takový prvek tlačítka, můžete jej ve WPF dále rozložit na jednotlivé části, jako je button chrome a TextBlock. To pak dává další možnosti, jak s takovými prvky můžeme zacházet a jak budeme přemýšlet o stavbě naší aplikace, respektive jejího uživatelského rozhraní (UI).

Flexibilní layout

Vzhledem k tomu, že WPF je založena na vektorové grafiky snadno reaguje na změny rozlišení obrazovky a nastavení DPI. S využitím layout engine, který zajišťuje rozvržení a vykreslení jednotlivých prvků v okně pak snadno dosáhnete vzhledu, který snadno reaguje nejen na změny velikosti okna, ale také na lokalizované texty v jednotlivých elementech.

Výkonná architektura data-bindingu

Data jsou základem pro většinu business aplikací. WPF vychází vstříc tvůrcům těchto aplikací a nabízí velice výkoný nástroj pro práci a manipulaci s daty v uživatelském rozhraní zajišťující synchronizaci dat mezi UI a datovými objekty. K dispozici je tak podpora pro notifikace změn a využití data konvertorů mezi datovým zdrojem a cílem. Binding pak také nabízí třídy pro manipulaci s kolekcí dat ve formě CollectionView, jenž nabízí řazení, grupování navigaci a filtrování poskytnutých dat. Vázání dat pak podporuje několik různých zdrojů a nechybí samozřejmě ani podpora pro LINQ.

Efektivní podpora pro tisk a tvorbu dokumentu

Této části se budu věnovat asi nejméně, přesto si zaslouží svoji pozornost. WPF totiž nabízí několik možností jak pracovat s textem a zobrazit text uživateli ve formě dokumentu. A to třeba ve formě Flow dokumentu, který nabízí snadné zvětšování formátovaného textu, umístění textu do sloupců nebo vkládání obrázků a jiných prvků z WPF. Samozřejmě můžete vytvořit i fixní dokumenty za použití XPS stejně, jako je to možné v Office. A v neposlední řadě je to nové API pro práci s tiskárnami, tiskovými servery a tiskovou frontou.

Look less prvky

 Všechny prvky ve WPF mají výchozí vzhled. Tento vzhled je definován samotným autorem daného prvku. Avšak každý vývojář, nebo spíše designer má možnost tento vizuální vzhled prvku změnit a to bez dopadu na jeho standradní chování. Je tak možné kompletně změnit vzhled tlačítka bez toho, aniž bychom se připravili o možnost klikat na toto tlačítko a přijímat zprávy o jednotlivých stisknutích.

Styly a šablony

 Šablona je mechanizmus, který nám umožňuje poměrně snadným způsobem změnit UI každého WPF prvku. Máte tak možnost definovat šablonu uživatelského rozhraní a tuto šablonu přiřadit jednotlivých prvkům, o vykreslení se pak již postará WPF. Obdobně pak můžete využít styly, které umožńují definici jednotlivých nastavení na jednom místě a obdobným způsobem přiřazení pak tyto vlastnosti promítnou pro sadu prvků. Styly se tak chovají velice podobně jako CSS na webové stránce.

UI integrace

Jak jsem se již zmínil výše, WPF nabízí skládání prvků, vedle skládání pak můžete využít i snadného propojení jednotlivých UI primitiv v okně aplikace. Můžete tak mixovat 2D vectorová primitiva s 3D prvky, zakomponovat video a proložit jej textem. A jak jsem již řekl, nemusí to být složitá a úmorná činnost, ale toto můžete provést velice elegantně.

Poodhalení WPF

Snad se mi tedy povedlo v předchozích větách maličko poodhalit, k čemu a jak můžete WPF využít. Je to jen špička samotného ledovce, to hlavní se skrývá uvnitř. Postupně si tak probereme jednotlivé body, které jsem nastínil a postupně přejdeme k věcem, které budou zajímat vývojáře, kteří mají vytvořit složitější aplikaci, než je Hello WPF. V těchto článcích se pak zaměřím na použití návrhových vzorů, které se dají využít při vývoji WPF, ale třeba i Silverlight aplikace.

Komentáře

ukládám komentář, vyčkejte prosím..
  1. Vdaka za clanok. Ja osobne by som velmi ocenil okrem vyhod aj nezaujaty nazor na vykon (pamat, CPU) v porovnani s WinForms, pripadne nejakym inym riesenim.

    Ja pisem momentalne aplikaciu v ktorej som sa rozhodol pouzivat WinForms + GDI pre custom dizajn prave kvoli tomu, ze zo vsetkych WPF aplikacii ktore som videl som mal pocit ze extremne zeru pamat a v UI 'citim' nejaky mikro-delay. Momentalne ale stojim na krizovatke a zvazujem WPF prave kvoli produktivite (ale najdolezitejsi je pre mna uzivatel).

    -M

    13.01.2010 @ 14:25

@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