TOC

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

About WPF:

WPF vs. WinForms

Во претходното поглавје, зборувавме за тоа што е WPF и малку за WinForms. Во ова поглавје, ќе се обидам да ги споредам двете, бидејќи иако тие служат за иста цел, има МНОГУ разлики помеѓу нив. Ако не си работел со WinForms претходно, и посебно ако WPF е твојата прва GUI рамка, можеш да го скокнеш ова поглавје, но ако те интересираат разликите тогаш продолжи да читаш.

Најважната разлика помеѓу WinForms и WPF е фактот дека додека WinForms е едноставно слој врз стандардните Windows контролли (пр. еден TextBox (кутија за текст)), WPF е изграден од нула и не се потпира на стандардните Windows контроли скоро во сите ситуации. Ова може да изгледа како суптилна разлика, но навистина не е, што дефинитивно ќе го забележиш ако некогаш си работел со рамка која што зависи од Win32/WinAPI.

Одличен пример за ова е копче со слика и текст на него. Ова не е стандардна Windows контрола, така што WinForms не ти ја нуди оваа можност стандардно. Наместо тоа, ќе треба да ја нацрташ сликата сам, да имплементираш твое сопствено копче кое што поддржува слики или користи една контрола од трета страна. Со WPF, едно копче може да содржи се бидејќи во суштина е граница со содржина и различни состојби (пр. недопрено, лебдено над него, притиснато). WPF копчето е "без-изглед", како што се повеќето други WPF контроли, што значи дека може да содржи опсег на други контроли во него. Сакаш копче со една слика и некој текст? Само постави Image и TextBox контрола во копчето и си завршил! Едноставно не го добиваш овој вид на флексибилност од стандардните WinForms контроли, поради кое што има голем пазар за прилично едноставни имплементации на контроли како копчиња со слики итн.

Недостаток на оваа флексибилност е тоа што понекогаш ќе треба да работиш понапорно за да постигнеш нешто што било многу лесно со WinForms, затоа што било создадено само за сценариото за кое ти е потребно. Барем така се чувствува на почетокот, каде што ќе се најдеш себеси како создаваш шаблони за да направш ListView со слика и некој убаво порамнет текст, нешто што WinForms ListViewItem го прави со една линија на код.

Ова беше само една разлика, но додека работиш со WPF, ќе сфатиш дека тоа е всушност основната причина за многу од другите разлики - WPF едноставно прави работи на негов сопствен начин, за подобро и за полошо. Веќе не си ограничен да ги правиш работите на начинот на Winfows, но за да добиеш ваков вид на флексибилност, плаќаш со малку повеќе работа кога навистина само бараш да ги направиш работите на начинот на Windows.

Следното е една целосно субјективна листа на клучните предности на WPF и WinForms. Треба да ти даде подобра идеја за тоа во што навлегуваш.

WPF предности

  • Понова е и затоа повеќе во склад со сегашните стандарди
  • Microsoft ја користи за многу нови апликации, на пр. Visual Studio
  • Пофлексибилна е, па можеш да направиш повеќе работи без да мора да напишеш или купиш нови контроли
  • Кога треба да користиш контроли од трети страни, развивачите на овие контроли најверојатно ќе бидат повеќе фокусирани на WPF затоа што е понова
  • XAML прави лесно да го креираш и едитираш твоето GUI, и дозволува работата да се подели помеѓу дизајнер (XAML) и програмер (C #, VB.NET итн.)
  • Databinding (поврзување на податоци), што ти овозможува да добиеш почиста сепарација на податоците и изгледот
  • Користи хардверско забрзување за цртање на GUI, за подобри перформанси
  • Ти овозможува да правиш кориснички интерфејси и за Windows апликации и за веб апликации (Silverlight / XBAP)

WinForms предности

  • Постара е и притоа повеќе испробана и тестирана
  • Веќе има многу контроли од трети страни кои што можеш да ги купиш или добиеш бесплатно
  • Дизајнерот во Visual Studio е сеуште, за време на пишувањево, подобар за WinForms отколку за WPF, каде што ќе мора да направиш повеќе од работите сам со WPF