TOC

This article has been localized into Slovak by the community.

O WPF:

WPF vs. WinForms

V predchádzajúcej kapitole sme hovorili o tom, čo je WPF a trochu o WinForms. V tejto kapitole sa ich budeme snažiť porovnať, pretože aj keď slúžia rovnakému účelu, existuje veľa rozdielov medzi nimi. Ak ste s WinForms nikdy predtým nepracovali a hlavne ak je WPF vašim prvým GUI, môžete preskočiť túto kapitolu, ale ak máte záujem o rozdiely, prečítajte si ďalej.

Jediným najdôležitejším rozdielom medzi WinForms a WPF je skutočnosť, že zatiaľ čo WinForms je jednoducho vrstva nad štandardnými ovládacími prvkami systému Windows (napr. TextBox), WPF je postavená od začiatku a nespolieha sa na štandardné ovládacie prvky systému Windows takmer vo všetkých situáciách. Môže to vyzerať len ako jemný rozdiel, ale naozaj je to veľký rozdiel, čo si určite uvedomíte, ak ste niekedy pracovali s frameworkom, ktorý závisí od Win32 / WinAPI.

Skvelým príkladom je tlačidlo s obrázkom a textom. To nie je štandardná kontrolka systému Windows, takže WinForms vám túto možnosť neposkytuje. Namiesto toho musíte nakresliť obrázok sami, vytvoriť vlastné tlačidlo, ktoré podporuje obrázky alebo používať kontrolky tretej strany. Vo WPF môže tlačidlo obsahovať čokoľvek, pretože je v podstate hranicou s obsahom a rôznymi stavmi (napríklad nedotknuté, označené, stlačené). Tlačidlo WPF je "bez pohľadu", rovnako ako väčšina ostatných ovládacích prvkov WPF, čo znamená, že môže obsahovať rad ďalších ovládacích prvkov vo vnútri. Chcete tlačidlo s obrázkom a nejakým textom? Jednoducho vložte ovládací prvok Image a TextBlock do tlačidla a hotovo! Vo WinForms nedosiahnete takúto flexibilitu zo štandardných ovládacích prvkov, čo je dôvod, prečo existuje veľký trh pre pomerne jednoduché implementácie ovládacích prvkov, ako sú tlačidlá s obrázkami atď.

Nevýhodou tejto flexibility je, že bude ťažšie dosiahnuť niečo, čo bolo veľmi jednoduché s programom WinForms, pretože to bolo vytvorené len pre scenár, ktorý ste potrebovali. Prinajmenšom je to cítiť aspoň na začiatku, kde si môžete vytvoriť šablóny ListView s obrázkom a nejakým pekne zarovnaným textom. Niečo také robí WinForms ListViewItem v jednom riadku kódu.

To bol len jeden rozdiel, ale keď pracujete s WPF, uvedomíte si, že je to v podstate dôležitý dôvod pre mnohé ďalšie rozdiely - WPF jednoducho robí veci vlastným spôsobom, lepším alebo horším. Už nie ste nútení robiť veci cestou Windows, ale aby ste získali takúto flexibilitu, zaplatíte s troškou viac práce, keď sa to naozaj snažíte robiť cestou Windows.

Nasleduje úplne subjektívny zoznam kľúčových výhod WPF a WinForms. Mal by vám dať o tom lepšiu predstavu.

Výhody WPF

  • Je novší, a preto je viac v súlade so súčasnými štandardmi
  • Microsoft to používa pre množstvo nových aplikácií, napr. Visual Studio
  • Je oveľa flexibilnejší, takže môžete robiť viac vecí bez toho, aby ste museli písať alebo kupovať nové ovládacie prvky
  • Ak potrebujete použiť ovládacie prvky tretích strán, vývojári týchto ovládacích prvkov budú pravdepodobne viac zameraní na WPF, pretože je novšie
  • XAML uľahčuje vytváranie a úpravu GUI a umožňuje rozdeliť prácu medzi návrhára (XAML) a programátora (C #, VB.NET atď.)
  • Databinding (viazanie údajov), ktorý vám umožní získať čistejšiu separáciu dát a zobrazenia
  • Používa hardvérovú akceleráciu na kreslenie GUI pre lepší výkon
  • Umožňuje vám vytvoriť užívateľské rozhrania pre aplikácie Windows aj pre webové aplikácie (Silverlight / XBAP)

Výhody WinForms

  • Je starší, preto viac odskúšaný a otestovaný
  • Existuje už veľa ovládacích prvkov tretej strany, ktoré si môžete kúpiť alebo získať zadarmo
  • Návrhár v aplikácii Visual Studio je zatiaľ lepší pre WinForms ako pre WPF, takže vo WPF budete musieť urobiť viac práce sami