TOC

This article has been localized into Italian by the community.

Cosa è WPF:

WPF versus WinForms

Nel capitolo precedente abbiamo parlato di cos'è WPF e abbiamo accennato qualcosa su WinForms. In questo capitolo cercheremo di comparare le due GUI, perché se è vero che si usano per gli stessi scopi, ci sono MOLTE differenze fra loro. Se il lettore non ha mai usato WinForms e, specialmente, se WPF è la sua prima struttura GUI, può saltare tranquillamente questo capitolo, ma se invece è interessato alle differenze, è invitato a proseguire la lettura.

La principale differenza fra WinForms e WPF è che mentre WinForms è semplicemente uno strato software sovrastante i controlli Windows (e.g. una TextBox), WPF è stato costruito da zero e quasi sempre non si affida ai controlli standard Windows. Può sembrare una differenza poco importante, ma in realtà non lo è, cosa che si noterà soprattutto avendo già lavorato con una struttura che dipende da Win32/WinAPI.

Un ottimo esempio al riguardo è un pulsante contenente una immagine e del testo. Questo non è un controllo standard di Windows, così WinForms non offre in modo semplice questa possibilità. Invece si renderà necessario disegnare da soli l'immagine e implementare il proprio tipo di pulsante che supporti l'inserimento di immagini, oppure usare un controllo di terze parti. Usando WPF, un pulsante può contenere qualsiasi cosa, perché è fondamentalmente un bordo con del contenuto e con vari stati (e.g. non-toccato, aleggiato (hovered), premuto). Un pulsante WPF non ha un "look", così come la maggioranza dei controlli WPF. Questo significa che può contenere tutta una serie di altri controlli al suo interno. Hai bisogno di un pulsante con un'immagine e del testo? Allora metti un controllo Image e un controllo TextBlock all'interno del pulsante ed ecco fatto! I controlli standard di WinForms non dispongono di così tanta flessibilità. Ecco perché esiste un grande mercato di implementazioni relativamente semplici di controlli del tipo del pulsante con l'immagine e altri simili.

Lo svantaggio dell'avere questa flessibilità è che certe volte ci si ritroverà a lavorare di più per ottenere qualcosa che con WinForms era molto semplice, proprio perché era stato creato solo per un particolare scenario. O, almeno, è come ci si sente all'inizio quando ci si ritrova a dover creare dei modelli per fare una ListView con immagini e testi allineati, cosa che usando il controllo ListViewItem di WinForms era possibile fare banalmente usando una sola linea di codice.

La precedente è solo una delle tante differenze, ma al procedere del lavoro con WPF, realizzeremo come questa infatti sia la differenza fondamentale dalla quale ne conseguiranno molte altre - WPF sta facendo le cose semplicemente a suo modo, nel bene e nel male. Non ci troviamo più costretti a dover utilizzare lo stile di Windows, ma per avere questo genere di flessibilità, si dovrà lavorare un po' di più quando si cercherà di fare le cose nello stile di Windows.

La seguente è una lista, totalmente soggettiva, dei principali vantaggi che WPF e WinForms offrono. Dovrebbe servire a dare un'idea complessiva di che cosa ci aspetta.

Vantaggi di WPF

  • È più recente, quindi più in sintonia con gli standard moderni
  • Utilizzato da Microsoft per molte nuove applicazioni, ad es. Visual Studio
  • È più flessibile, offre la possibilità di realizzare più cose senza dover scrivere o acquistare nuovi controlli
  • Quando si utilizzano controlli da parti terze, è molto probabile che gli sviluppatori di questi controlli siano più focalizzati su WPF in quanto è più recente
  • XAML rende più semplice la creazione e la modifica delle GUI ed in più offre la possibilità di dividere il lavoro tra un "designer" (XAML) e uno sviluppatore (C#, VB.NET etc.)
  • Usa il concetto di Databinding, permettendo una migliore separazione tra i dati e la presentazione
  • Utilizza l'accelerazione hardware per tracciare la GUI, migliorando le prestazioni
  • Permette la creazione di migliori interfacce sia per applicazioni Windows che per applicazioni Web (Silverlight/XBAP)

Vantaggi di WinForms

  • È più vecchio, quindi maggiormente testato ed utilizzato
  • Esistono già molti controlli sviluppati da parti terze, sia gratis che a pagamento
  • Il "designer" in Visual Studio è, al momento, migliore per WinForms che per WPF, il quale richiederà più lavoro per WPF