This article has been localized into Hungarian by the community.
WPF vs. WinForms
Az előző fejezetben beszéltünk egy kicsit WPF-ről és egy kicsit a WinForm-okról is. Ebben a részben megpróbálom összehasonlítani a kettőt mivel egyazon célt szolgálnak, DE ettől független nagyon sok különbség van köztük. Ha még sohasem foglalkoztál WinForm-okkal ezelőtt és legfőképp ha WPF a legelső GUI keretrendszer nyugodtan kihagyhatod a következő részt, ellenben ha érdekel, nyugodtan folytasd az olvasást.
Egyszerűen a legfontosabb különbség WinForms és WPF között az az, hogy amíg a WinForms egy egyszerű réteg a standard Windows vezérlők tetején (pl. TextBox), a WPF alapjaitól lett újraépítve és nem függ az alap Windows vezérlőktől az esetek túlnyomó többségében. Ez csekély különbségnek tűnhet, pedig nem az, amire te is rá fogsz jönni, ha már dolgoztál Win32/WinAPI-tól függő keretrendszerrel.
Egy jó példa erre egy nyomógomb, ami képet és szöveget is tartalmaz. Ez nem egy alap Windows vezérlő, ezért a WinForms sem rendelkezik ilyen megoldással alaphelyzetben. Helyette vagy saját megoldást kell kitalálni a kép megrajzoltatásához, vagy valaki más implementációját kell használni. WPF-ben a nyomógomb bármilyen elemet megjeleníthet, mert lényegében csak egy keret az általunk megadott tartalommal és állapotokkal (mint például: alap, fókuszban vagy lenyomott). A WPF nyomógomb 'nézet-független', mint a többi WPF vezérlő, ami azt jelenti, hogy bármilyen másik vezérlő lehet a tartalma, nem csak szöveg. Szeretnénk szöveget és képet is megjeleníteni rajta? Csak tegyünk egy 'Image' és 'TextBlock' vezérlőt rá és kész is! Ezt a fajta szabadságot az alap WinForms sosem biztosította, ezért alakult ki komoly piaca az egyedi vezérlőknek.
A hátulütője ennek a szabadságnak az, hogy néha kicsivel többet kell dolgoznunk, mint WinForms alatt, ahol egy előre megírt ( akár külső forrásból származó ) kód implementálása sokkal egyszerűbb lehet. Legalábbis elsőre amíg elkészülnek a saját sablonjaink, mint például egy 'ListView' esetén ami képet és formázott szöveget jelenít meg. Ez WinForms esetén egy sor, a többit a keretrendszer megoldja ( megjegyzés: Egyedileg formázott megoldások esetén sokkal könnyebben, több mindent implementálhatunk WPF-ben, míg WinForms esetén könnyen falakba ütközhetünk, a Windows UI kötöttségei miatt !)
Ez csak egyfajta különbség, de ahogy dolgozol a WPF-el rájössz ez is a többi eltérésből adódik - mert a WPF próbálja a saját útját járni: néha jobban, néha rosszabbul. Ezáltal nem vagyunk a Windows-os módszerre korlátozva, cserébe nagyfokú szabadságot kapunk aminek az az ára, hogy egy kicsivel többet kell dolgoznunk.
A következő lista erősen szubjektív, ami a WPF és a WinForms fő előnyeit illeti. Remélhetőleg segít eldönteni, hogy mit melyik platformon érdemes fejleszteni.
WPF előnyei
- Újabb, így jobban összhangban van a jelenlegi elvárásokkal
- A Microsoft sok új alkalmazásnál használja, pl: Visual Studio
- Rugalmasabb, így több dologra lehetsz képes új vezérlők megírása, vagy vásárlása nélkül
- Ha külsős vezérlőket kell használnod, a vezérlők fejlesztői valószínűleg a WPF-re koncentráltak jobban, mivel ez az újabb
- XAML megkönnyíti a felhasználói felület létrehozását, szerkesztését és lehetővé teszi a UI tervezés (XAML) és üzleti logika elkülönítését (C#, VB.NET, stb.)
- Adatösszekötés, ami által jobban elkülönítheted az adatot az elrendezéstől
- Hardveres gyorsítást alkalmaz a GUI-ra rajzolás során ami növeli a teljesítményét
- Az itt kialakított felhasználói felület felhasználható Windows alkalmazásokban és web alkalmazásokban egyaránt (Silverlight/XBAP)
WinForms előnyei
- Régebbi, így sokkal próbáltabb és teszteltebb
- Már rengeteg külsős vezérlőt lehet beszerezni pénzért, vagy akár ingyen
- A tervező Visual Studio-ban a mai napig jobb a WinForms-ban a WPF-nél, ahol a munka nagy részét neked kell elvégezned
- Afar
- Afrikaans
- Albanian
- Arabic
- Bulgarian
- Catalan
- Chinese
- Croatian
- Czech
- Danish
- Dutch
- Finnish
- French
- German
- Gujarati
- Hebrew
- Hindi
- Hungarian
- Indonesian
- Italian
- Japanese
- Kannada
- Korean
- Lithuanian
- Macedonian
- Norwegian Bokmål
- Persian
- Polish
- Portuguese
- Romanian
- Russian
- Serbian
- Slovak
- Slovenian
- Spanish
- Swedish
- Tamil
- Thai
- Turkish
- Ukrainian
- Uzbek
- Vietnamese