TOC

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

About WPF:

WPF vs. WinForms

În capitolul anterior, am vorbit despre ce este WPF și despre WinForms. În acest capitol, voi încerca să comparăm cele două, deoarece, în timp ce acestea servesc același scop, există o mulțime de diferențe între ele. Dacă nu ați lucrat niciodată cu WinForms și mai ales dacă WPF este primul dvs. framework GUI, puteți trece peste acest capitol, dar dacă sunteți interesat de diferențe citiți mai departe.

Cea mai importantă diferență dintre WinForms și WPF este faptul că, în timp ce WinForms este pur și simplu un layer deasupra controalelor standard Windows (de exemplu, un TextBox), WPF este construit de la zero și nu se bazează pe controale standard Windows în aproape toate situațiile . Acest lucru ar putea părea o diferență subtilă, dar într-adevăr nu este, ceea ce veți observa cu siguranță dacă ați lucrat vreodată cu un cadru care depinde de Win32 / WinAPI.

Un exemplu excelent al acestui lucru este un buton cu o imagine și un text pe acesta. Acesta nu este un control Windows standard, așa că WinForms nu vă oferă această posibilitate pur și simplu. În schimb, va trebui să desenați imaginea, să implementați propriul buton care acceptă imagini sau să folosiți un control al unei părți terțe. Cu WPF, un buton poate conține orice, deoarece este în esență un border (o margine) cu conținut și diferite stări (de exemplu, untouched, hovered, pressed). Butonul WPF este "look-less", la fel ca majoritatea celorlalte controale WPF, ceea ce înseamnă că poate conține o serie de alte controale în interiorul acestuia. Vreți un buton cu o imagine și un text? Doar puneți o Imagine și un control TextBlock în interiorul unui buton și ați terminat! Pur și simplu nu obțineți acest tip de flexibilitate din controalele standard WinForms, motiv pentru care există o piață mare pentru implementări destul de simple de controale cum ar fi butoane cu imagini și așa mai departe.

Dezavantajul acestei flexibilități este că, uneori, va trebui să lucrați mai mult pentru a obține ceva ce puteți obține foarte ușor cu WinForms, deoarece a fost creat doar pentru scenariul de care aveți nevoie. Cel puțin așa se simte la început, când creați șabloane pentru a crea un ListView cu o imagine și un text bine aliniat, ceea ce ListViewItem din WinForms face într-o singură linie de cod.

Aceasta a fost doar o diferență, dar in timp ce lucrati cu WPF, veti realiza ca este de fapt motivul principal pentru multe alte diferente - WPF este pur si simplu pentru a face lucrurile in felul propriu, pentru mai bine si pentru mai rau. Nu mai sunteți constrâns să faceți lucrurile în tiparul Windows, dar pentru a obține această flexibilitate, depuneți ceva mai multă muncă atunci când chiar căutați să faceți lucruri în tiparul Windows.

În continuare este o listă complet subiectivă a avantajelor cheie pentru WPF și pentru WinForms. Ar trebui să vă dea o idee mai bună despre situația în care vreți să vă băgați.

Avantaje WPF

  • Este mai nou și, prin urmare, mai mult în conformitate cu standardele actuale
  • Microsoft îl folosește pentru o mulțime de aplicații noi, de ex. Visual Studio
  • Este mai flexibil, astfel încât puteți face mai multe lucruri fără a fi nevoie să scrieți sau să cumpărați controale noi
  • Când trebuie să utilizați comenzile de la terțe părți, dezvoltatorii acestor controale vor fi probabil mai interesați de WPF deoarece sunt mai noi
  • XAML facilitează crearea și modificarea interfeței grafice și permite împărțirea lucrărilor între un designer (XAML) și un programator (C #, VB.NET etc.)
  • Databinding, care vă permite să obțineți o separare mai clară a datelor și a aspectului
  • Utilizează accelerația hardware pentru desenarea interfeței grafice, pentru o performanță mai bună
  • Vă permite să faceți interfețe de utilizator atât pentru aplicațiile Windows cât și pentru aplicațiile web (Silverlight / XBAP)

Avantaje WinForm

  • Este mai veche și, prin urmare, mai încercată și testată
  • Există deja multe controale de la terțe părți pe care le puteți cumpăra sau obține gratuit
  • Designerul din Visual Studio se orientează mai bine pe WinForms decât pe WPF, unde trebuie să muncească mai mult