TOC

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

About WPF:

WPF vs. WinForms

Eelmises peatükis rääkisime sellest, mis asi WPF on, ning veidi puututasime ka WinFormsi. Selles peatükis üritame neid kahte võrrelda, sest kuigi nende eesmärk on sama, on nende kahe vahel palju erinevusi. Kui sa ei ole enne WinFormsi kasutanud, ja eriti kui WPF on sinu kõige esimene GUI raamistik, võid selle peatüki vahele jätta. Kuid kui oled erinevustest huvitatud, siis loe aga edasi!

Kõige olulisem erinevus WinFormsi ja WPFi vahel on fakt, et kui WinForms on lihtsalt "kiht" standardsete Windowsi elementide (nt. TextBoxi) peal, siis WPF on ehitatud nullist ning ei sõltu standardsetest Windowsi elementidest. See võib tunduda väikse erinevusena, kuid tegelikult see nii pole, mida kindlasti märkad kui oled kasutanud raamistikku, mis sõltub Win32/WinAPI'st

Suurepärane näide sellest on nupp, mille peal on pilt ja tekst. See ei ole standardne Windowsi element, seega WinForms ei pakku sulle sellist võimalust otse. Selle asemel pead sa pildi ise joonistama ning programmeerima omaenda nupu, mis toetab pilte, või kasutama kellegi kolmanda lahendusi. WPF'is võib nupp hoida mis tahes asju, sest WPFis on nupp vaid raam mingisuguse sisuga ja omadustega (puutumata, hover, alla vajutatud jne.) WPF'i nupp, nagu ka enamus WPF'i elemente, on "ilmetud", mis tähendab, et see võib sisaldada ka teisi elemente enda sees. Soovid nuppu koos pildi ja tekstiga? Lihtsalt pane pilt ja TextBlock element nupu sisse ja ongi valmis! WinForms sellist paindlikkust ei paku.

Sellisel paindlikkusel on ka omad vead. Vahel pead rohket vaeva nägema, et saavutada midagi, mis oli WinFormsis väga lihtne. Vähemalt alguses tundub niimoodi, kui sa leiad ennast loomas "template'e", et luua pildi ja ilusasti paigutatud tekstiga ListView'e, midagi, mida WinFormsi ListViewItem teeb ühe koodireaga.

See oli vaid üks erinevus, kuid töötades WPF'iga, saad aru, et see on peamine põhjus paljudeks teisteks erinevusteks - WPF lihtsalt teeb asju omamoodi, nii halvas kui ka heas. Sa ei ole enam sunnitud asju tegema Windowsi moodi, kuid et sellist paindlikkust saada, maksad selle eest natuke rohkema vaevaga.

Järgnevalt on täiesti subjektiivne nimekiri WPF'i ja WinFormsi plussidest, mis peaks andma sulle parema ülevaate, millega tegemist on.

WPF advantages

  • Uuem ja seega vastab nüüdsetele standarditele
  • Microsoft kasutab seda paljudes uutes rakendustes, näiteks Visual Studios
  • Paindlikum, võimaldab teha rohkem asju ilma uute elementide kirjutamise või ostmiseta
  • Kui tekib vajadus kasutada kellegi kolmanda lahendusi, siis nende lahenduste arendajad keskenduvad tõenäoliselt WPF'ile, sest see on uuem
  • XAML võimaldab kasutajaliidest lihtsa vaevaga luua ja redigeerida, ning võimaldab tööjaotust disaineri (XAML) ja programmeerija (C#, VB.NET jne.)
  • Andmete sidumine, mis võimaldab eraldada andmed ja elemendid
  • Suurem jõudlus GUI renderdamisel
  • Võimaldab luua kasutajaliideseid nii Windowsi rakendustele kui ka veebirakendustele (Silverlight/XBAP)

WinForms advantages

  • Vanem, seega rohkem proovitud ja testitud
  • Rohkelt kolmandate osapoolte lahendusi, mis on saadaval tasuta või ostes
  • Visual Stuido disainer on, artikli kirjutamise ajal, parem WinFormsile kui WPF'ile, kus peab ise WPF'iga rohkem tööd tegema