This article has been localized into Serbian by the community.
WPF i WinForms
U prethodnom poglavlju smo pričali o tome šta WPF predstavlja i malo o WinForms okruženju. U ovom poglavlju ću pokušati da ih uporedim, jer iako služe istoj svrsi, postoji PUNO razlika među njima. Ako nikada ranije niste radili sa WinForms okruženjem, a pogotovu ako je WPF vaše prvo GUI okruženje, možete preskočiti ovo poglavlje, ali ako vas razlike ipak zanimaju, nastavite sa čitanjem.
Najbitnija razlika između WinForms i WPF okruženja je činjenica da je WinForms jednostavno dodatni sloj nalepljen na standardne Windows kontrole (npr. Polje za unos teksta), dok je WPF napravljen od nule i ne oslanja se na standardne Windows kontrole u velikoj većini slučajeva. Ovo može delovati kao suptilna razlika, ali zapravo nije, što ćete definitivno primetiti ukoliko ste ikada radili sa okruženjem koje zavisi od Win32/WinAPI.
Odličan primer ove razlike je dugme sa slikom i tekstom. Ovo nije standardna Windows kontrola, pa WinForms ne nudi instant rešenje za pravljenje iste. Umesto toga ćete morati da sami nacrtate sliku, implementirati svoje dugme koje podržava slike, ili da koristite neku 3rd party kontrolu. U WPF-u, dugme može da sadrži bilo šta jer ono zapravo predstavlja granicu sa sadržajem i raznim stanjima (npr. untouched, hovered, pressed). WPF dugme je "bezlično", poput većine WPF kontrola, što znači da može da sadrži spisak drugih kontrola unutar sebe. Želite dugme sa slikom i nekim tekstom? Samo stavite Image i TextBlock kontrole unutar dugmeta i gotov posao! Ovakva fleksibilnost jednostavno ne postoji kod standardnih WinForms kontrola, što je razlog zbog kojeg postoji ogroman market relativno jednostavnih implementacija kontrola poput dugmeta sa slikama i tako dalje.
Mana ove fleksibilnosti je da ćete ponekada morati da uložite više truda da pstognite nešto što je veoma jednostavno sa WinForms-om, jer je prilagođen konkretnom scenariju kojem se vi nalazite. Bar je takav osećaj na početku gde će vam se dešavati da pravite šablone za ListView-ove sa slikom i lepo poravnanim tekstom, što se sa WinForms-ovim ListViewItem-om radi jednom linijom koda.
Ovo je bila samo jedna od razlika, ali dok budete radili sa WPF-om, uvidećete da ona zapravo leži iza mnogo drugih - WPF jednostavno radi stvari na svoj sopstveni način, bio on bolji ili ne. Više niste ograničeni u smislu da morate da uradite stvari na Windows-ov način, ali ova fleksibilnost ima svoju cenu - potrebno je uložiti više truda nego što bi to bilo u slučaju da radite stvari na Windows-ov način.
U nastavku je potpuno subjektivna lista sa glavnim prednostima WPF-a i WinForms-a. Trebalo bi da vam da bolji uvid u tehnologije sa kojima ćete raditi.
Prednosti WPF-a
- Noviji je i stoga više u toku sa trenutnim standardima
- Mikrosoft koristi WPF za puno novih aplikacija, npr. Visual Studio
- Fleksibilniji je, pa možete da napravite više bez pisanja ili kupovine novih kontrola
- Kada se nađete u situaciji da morate da koristite 3rd party kontrole, developeri ovih kontrola će verovatno biti fokusiraniji na WPF jer je noviji
- XAML čini pravljenje i uređivanje vašeg GUI-ja lakšim, i dozvoljava da podelite radnu površinu na dizajnerski (XAML) deo i programerski (C#, VB.NET, itd.)
- Databinding, koji omogućava čistiju podelu podataka i prikaza
- Koristi hardversko ubrzanje za crtanje GUI-ja, za bolje performanse
- Omogućava pravljenje korisničkih interfejsa kako za Windows aplikacije, tako i za Web aplikacije (Silverlight/XBAP)
Prednosti WinForms-a
- Stariji je je i stoga je duže u upotrebi i više je testiran
- Već postoji mnogo 3rd party kontrola koje možete kupiti ili nabaviti besplatno
- Dizajner unutar Visual Studio-a je i dalje, u trenutku pisanja ovog teksta, bolje prilagođen WinForms-u nego WPF-u, što znači da ćete imate više posla da završite isti zadatak korišćenjem WPF-a
- 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