TOC

This article is currently in the process of being translated into Croatian (~99% done).

About WPF:

WPF vs. WinForms

U prethodnom poglavlju smo pričali o tome što je to WPF, a spomenuli smo i WinForms. U ovom poglavlju pokušati ću usporediti te dvije tehnologije jer, iako služe istoj svrsi, postoji MNOGO razlika između njih. Ako nikada niste radili sa WinForms, posebice ako Vam je WPF prvo GUI okruženje, slobodno preskočite ovo poglavlje, ali ako Vas interesiraju razlike nastavite čitati.

Najvažnija razlika između WinForms i WPF-a je činjenica da dok je WinForms samo sloj preko standardnih Windows kontrola (npr. TextBoxa), WPF je napravljen od nule i ne oslanja se na standardne Windows kontrole u skoro svim situacijama. Ovo se može činiti kao mala razlika, ali u stvarnosti nije, što se definitivno primjeti ako ste ikad radili u razvojnoj cijelini koja se oslanja na Win32/WinAPI.

Odličan primjer je gumb koji sadrži sliku i tekst. Ovo nije uobičajena Windows kontrola tako da WinForms ne nudi ovu mogućnost standardno. Umjesto toga, trebate sami napraviti sliku, implementirati vlastiti gumb koji će omogućiti prikaz slike ili koristiti nečije tuđe gotovo rješenje. S WPF-om gumb može sadržavati bilo što zato jer je to u osnovi okvir sa sadržajem i raznim stanjima (npr. netaknut, pokazivač prelazi preko, pritisnut). WPF gumb je "bez izgleda", kao što je i većina ostalih WPF kontrola, što znači da mogu sadržavati niz drugih kontrola unutar sebe. Želite gumb sa slikom i nekakvim tekstom? Samo stavite Image i TextBlock kontrolu unutar gumba i gotovi ste! Ovakvu fleksibilnost jednostavno ne možete postići koristeći standardne WinForms kontrole, što je razlog postojanja velikog tržišta za prilično jednostavne implementacije kontrola poput gumba sa slikom ili sličnih.

Nedostatak ove fleksibilnosti je taj što ćete ponekad morati više raditi za postići nešto što je bilo vrlo lako s WinForms, zato jer je to stvoreno baš za slučaj koji vam je potreban. Tako se barem čini u početku, kada se uhvatite da stvarate uzorak za ListView sa slikom i uredno poravnatim tekstom, nešto što ListViewItem u WinForms može napraviti s jednom linijom koda.

Ovo je samo jedna razlika, ali kako budete radili s WPF-om, uvidjeti ćete da je to ustvari fundamentalan razlog za mnoge ostale razlike - WPF jednostavno stvari radi na svoj način, na bolje ili na gore. Više niste ograničeni raditi stvari na Windows način, ali da biste postigli tu razinu fleksibilnosti, potrebno je uložiti malo više truda kada zbilja želite samo napraviti stvari na Windows način.

Ovo što slijedi je potpuno subjektivna lista ključnih prednosti WPF-a i WinForms. Trebala bi vam pružiti bolji uvid u što se upuštate.

WPF prednosti

  • Novije je i stoga više u skladu s trenutnim standardima
  • Microsoft ga koristi za mnoge nove aplikacije (npr. Visual Studio)
  • Fleksibilnije je, tako da možete napraviti više stvari bez da morate pisati ili kupovati nove kontrole
  • Kad trebate koristiti kontrole trećih osoba, developeri tih kontrola će vjerojatnije biti više fokusirani na WPF zato jer je noviji
  • XAML olakšava kreiranje i modificiranje vašeg sučelja te omogućava da se posao podijeli između dizajnera (XAML) i programera (C#, VB.NET itd.)
  • Povezivanje podataka, koje omogućava jasnije odjeljivanje podataka i prikaza
  • Koristi hardversko ubrzanje za iscrtavanje sučelja, za bolje performanse
  • Omogućuje stvaranje korisničkih sučelja kako za Windows aplikacije tako i za Web aplikacije (Silverlight/XBAP)

WinForms prednosti

  • Starije je i stoga isprobanije i više testirano
  • Već postoji mnogo kontrola trećih osoba koje se mogu kupiti ili besplatno preuzeti
  • Dizajner u Visual Studiu je još uvijek, u vrijeme pisanja, bolji za WinForms nego za WPF, gdje se mora više posla napraviti sam s WPF-om