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.

Jako výborný příklad poslouží následující situace - představte si, že chcete mít v aplikaci tlačítko, na kterém je obrázek s textem. Takové tlačítko ovšem ve standardních kontrolkách systému Windows není, a proto ho není možné ve WinForms přímo dostat do okna aplikace. Museli byste buďto obrázek vykreslovat přes tlačítko ručně, naimplementovat vlastní tlačítko, které by toto umožňovalo, nebo použít nějaké tlačítko z knihovny třetí strany. Ve WPF, naproti tomu, může tlačítko obsahovat cokoliv, protože se jedná v podstatě pouze o ohraničenou oblast s obsahem, která interně uchovává svůj stav (základní tlačítko, myš najetá na tlačítku, stisknuté tlačítko). Tlačítko ve WPF nemá, stejně jako většina ostatních kontrolek, pevně daný a konečný vzhled, což mj. znamená, že je možné vložit do něj jakoukoliv jinou kontrolku. Chcete tlačítko s obrázkem a textem? Tak jednoduše vložte do dané kontrolky Button kontrolky Image (obrázek) a TextBlock (textová oblast) a jste hotovi! Se standardními kontrolkami systému Windows to takhle jednoduše zkrátka nejde, což je i důvod, proč existuje trh s řadou kontrolek, jako jsou právě tlačítka s obrázky apod.

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 nuceni požívat kontrolky třetích stran, je pravděpodobné, že jejich vývojáři se budou soustředit spíše na WPF, vzhledem k tomu, ž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í jak pro aplikace desktopové, tak webové (Silverlight či 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