TOC

This article has been localized into Czech by the community.

O WPF:

WPF vs. WinForms

V předchozí kapitole jsme probírali, co to WPF vlastně je, a zmínili jsme se i o WinForms. V následující kapitole zkusíme oba frameworky porovnat, protože ačkoli slouží ke stejnému účelu, je mezi nimi opravdu HODNĚ rozdílů. Tuto kapitolu můžete klidně přeskočit, pokud jste nikdy předtím s WinForms nepracovali, či pokud je WPF váš úplně první GUI framework. Pokud vás však zmiňované rozdíly zajímají, klidně č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 takovouto flexibilitu kontrolek je to, že v některých případech bude vytvořit kýžené uživatelské rozhraní obtížnější, než tomu bylo u WinForms, a to proto, že ve WinForms to bylo vytvořeno právě pro ten jeden pevně daný scénář. Alespoň ze začátku to tak působí, když najednou budete vytvářet Templaty (šablony) jen proto, abyste do aplikace dosadili ListView s obrázkem a hezky zarovnaným textem, čehož lze ve WinForms dosáhnout za použití ListViewItem jediným řádkem zdrojového kódu.

Toto byl zatím jediný rozdíl, ale jak budete s WPF více a více pracovat, uvědomíte si, že se vlastně jedná o základní příčinu mnoha dalších rozdílů - WPF prostě řeší řadu věcí po svém, ať už je to pro dobro věci, či ne. Už nebudete nuceni dělat věci tak, jak káže Windows, ale zaplatíte za to trochou práce navíc, a to bohužel i v případech, kdy budete chtít dělat věci tak, jak je dělá Windows.

Následující seznam obsahuje výhody jak WPF, tak WinForms. Je psán zcela subjektivně a měl by vám posloužit k vytvoření si lepší představy o tom, do čeho se pouštíte.

Výhody WPF

  • Je novější, a tak lépe vyhovuje současným standardům
  • Microsoft sám v něm tvoří řadu nových aplikací, např. Visual Studio
  • Je flexibilnější, takže umožňuje vytvořit řadu věcí bez nutnosti programovat nové kontrolky či kupovat kontrolky třetích stran
  • 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ší
  • Jazyk XAML vám umožňuje jednoduše tvořit a editovat uživatelské rozhraní, a také umožňuje oddělit design formuláře (XAML) od zdrojového kódu (C#, VB .NET atd.), takže zefektivní práci programátorů i designérů
  • Binding (propojování dat) umožňuje lepší oddělení prezentační a logické vrstvy aplikace
  • K vykreslení GUI používá hardwarovou akceleraci, což výrazně zlepšuje výkon
  • Umožňuje vytvářet uživatelské rozhraní pro desktopové Windows aplikace i webové aplikace (Silverlight/XBAP)

Výhody WinForms

  • Je starší, a tak je lépe odzkoušený a vyladěný
  • Existuje již velké množství kontrolek třetích stran, které je možné zakoupit či stáhnout zdarma
  • Okno Designer Visual Studia je pořád ještě lepší pro WinForms než pro WPF, takže u WPF budete muset udělat více práce sami