TOC

This article is currently in the process of being translated into Czech (~99% done).

O WPF:

WPF vs. WinForms

V předchozí kapitole jsme psali o tom, co je WPF a zmínili jsme také něco málo o WinForms. V této kapitole se pokusíme tyto dva frameworky porovnat, protože i když slouží stejnému účelu, je mezi nimi MNOHO rozdílů. Pokud jste předtím nepracovali s WinForms a hlavně pokud je WPF váš úplně první GUI framework, můžete tuto kapitolu klidně přeskočit, ale pokud vás zmíněné rozdíly zajímají, určitě čtěte dál.

Nejdůležitějším rozdílem mezi WinForms a WPF je fakt, že zatímco WinForms jsou jednoduše vrstvou nad standardními formuláři Windows (např. TextBox), WPF je vybudována od základů a téměř ve všech situacích nespoléhá na standardní Windows formuláře. To může na první pohled vypadat jako drobný rozdíl, ale není, což si určitě uvědomíte, pokud jste dříve pracovali z frameworkem vycházejícím z Win32/WinAPI.

Výborným příkladem je například tlačítko, obsahující obrázek a text. To není standardní kontrolka Windows, takže WinForms tuto možnost v základním provedení nenabízí. Namísto toho budete muset nějak sami vykreslit obrázek na tlačítku, implementovat vlastní tlačítko, nebo využít nějaké řešení třetí strany. S využitím WPF může tlačítko obsahovat cokoliv, protože jde jednoduše o ohraničenou oblast s obsahem, která disponuje několika stavy (jako např. nestisknuté, nacházející se pod ukazatelem myši, stisknuté). WPF tlačítko nemá v základu žádný speciální vzhled, stejně jako další kontrolky ve WPF a může obsahovat množství jiných kontrolek uvnitř sebe sama. Chcete mít tlačítko s obrázkem a textem? Stačí do tlačítka umístit kontrolky Image a TextBlock a máte hotovo! Takovou flexibilitu standardní kontrolky ve WinForms prostě nemají, proto existuje velký trh s různými jednoduchými implementacemi kontrolek, jako jsou tlačítka s obrázky a podobné.

Daní za tuto flexibilitu je, že někdy bude obtížnější dosáhnout toho, co bylo velmi jednoduše řešitelné ve WinForms, protože to bylo vytvořeno právě pro jediný scénář, pro který se to hodí. Alespoň zpočátku ten pocit budete mít, když například zjistíte, že vytváříte šablony pro vytvoření ListView s obrázky a nějak hezky zarovnaným textem, což je něco, co dělá ListViewItem ve WinForms pomocí jediného řádku kódu.

To byl zatím jeden jediný rozdíl, ale jak budete postupně s WPF pracovat, zjistíte, že je základní příčinou pod povrchem mnoha dalších rozdílů - WPF prostě dělá věci svým způsobem, což je projevuje v dobrém i zlém. Už nebudete nuceni řešit věci tak, jak káží Windows, ale za tuto flexibilitu zaplatíte trochou více práce právě v případech, kdy budete chtít udělat věci tak, jak káží Windows.

Toto je subjektivní výčet hlavních výhod WPF oproti WinForms. Mělo by vám to poskytnout lepší představu o tom, do čeho se pouštíte.

Výhody WPF

  • Je novější, proto více vyhovuje současným standardům
  • Microsoft používá WPF pro mnoho nových aplikací, například Visual Studio
  • Je flexibilnější, takže vytvoříte více věcí bez nutnosti programovat nebo kupovat nové kontrolky
  • Pokud budete muset využít kontrolky třetích stran, jejich vývojáři budou spíše zaměřeni na WPF, protože je novější
  • XAML umožňuje jednoduše vytvářet a upravovat vaše GUI a umožňuje oddělit práci designérů (XAML) od práce programátorů (C#, VB.NET atd)
  • Databinding (datové propojení) umožní lepší oddělení dat od návrhu
  • Využívá hardwarovou akceleraci vykreslování GUI, což zvyšuje výkon
  • Umožňuje vytvářet uživatelské rozhraní pro desktopové Windows aplikace i webové aplikace (Silverlight/XBAP)

Výhody WinForms

  • Je starší, proto lépe odzkoušený a odladěný
  • Existuje velké množství kontrolek třetích stran, které se dají zakoupit nebo stáhnout zdarma
  • Modul Designér ve Visual Studiu je v tuto chvíli stále lepší pro WinForms, než pro WPF, kde budete muset za něj udělat více práce sami
This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!