Durante la creazione di una nuova interfaccia grafica, WPF è la scelta preferita su Windows Form?[chiuso]

StackOverflow https://stackoverflow.com/questions/57909

Domanda

La maggior parte delle restrizioni e trucchi con windows form, sono comuni alla maggior parte dei programmatori.Ma dal momento che .NET 3.0 c'è anche WPF disponibile, Windows Presentation Foundation.Si dice che non si può fare "sexy applicazioni" più facile con esso e con .NET 3.5 SP1 ha ottenuto un buon incremento di velocità di esecuzione.

Ma dall'altro lato, un sacco di cose di lavoro diversi con WPF.Non voglio dire che è più difficile, ma devi imparare tutto da zero.

La mia domanda:Vale la pena di spendere questo tempo supplementare quando è necessario creare una nuova interfaccia grafica e non vi è alcuna pressione per il progetto?

È stato utile?

Soluzione

WPF permette di fare alcune cose incredibili, e mi piace...ma mi sento sempre in dovere di qualificarsi miei consigli, ogni volta che gli sviluppatori mi chiedono se penso che dovrebbe essere in movimento per la nuova tecnologia.

Sono gli sviluppatori disposti (preferibilmente, DESIDEROSO) di trascorrere il tempo necessario per imparare a usare WPF in modo efficace?Non avrei mai pensato di dire questo su MFC, o Windows Form, o anche non gestite DirectX, ma probabilmente NON una squadra cercando di "pick up" WPF nel corso di un normale dev.ciclo per un prodotto di spedizione!

Fare almeno uno o due dei vostri sviluppatori hanno alcune sensibilità del design, e gli individui con progetto definitivo autorità di avere una buona comprensione delle questioni di sviluppo, in modo che è possibile sfruttare la funzionalità di WPF per creare qualcosa che in realtà è MEGLIO, invece di più "colorate", con il gratuito di animazione?

Fa una certa percentuale del vostro target base di clienti di eseguire sul chip grafico integrato imposta che potrebbe non supportare la funzionalità che si stavano progettando -- o sono ancora in esecuzione Windows 2000, che eliminerebbe come clienti tutto?Alcune persone potrebbe anche chiedere se i vostri clienti realmente CURA su di una grafica migliorata, ma, avendo vissuto interno della società "la Nostra azienda clienti non si preoccupano di colori e immagini" dibattiti nei primi anni '90, so che ben progettate le soluzioni dei vostri concorrenti potranno EFFETTUARE la manutenzione e la cura, e la vera domanda è se le condizioni sono giuste, consentono di offrire qualcosa che li rende cura ORA.

Il progetto è di coinvolgere i motivi di sviluppo, almeno per il livello di presentazione, per evitare l'ulteriore complessità di cercare di agganciare incompatibile legacy ponteggi (Interoperabilità con windows Forms NON è trasparente)?

Può il vostro gestore di accettare (o essere distratti da notare) un significativo CALO della produttività degli sviluppatori per quattro-sei mesi?

Quest'ultimo problema è dovuto a quello che mi piace pensare come il "FizzBin" la natura di WPF, con dieci diversi modi per implementare qualsiasi compito, e senza apparente ragione per preferire un approccio a un altro, e poco disponibili le istruzioni per aiutarvi a fare una scelta.Non solo le carenze di qualsiasi scelta diventato chiaro solo molto più avanti nel progetto, ma si sono praticamente garantiti per ogni sviluppatore del progetto adotta un approccio diverso, risultante in una maggiore manutenzione mal di testa.Più frustrante di tutte sono le incongruenze che costantemente viaggio è, come si tenta di imparare il framework.

È possibile trovare maggiori e più dettagliate WPF informazioni relative alle una voce sul mio blog:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

Altri suggerimenti

Dopo tre mesi di tentativi di elaborare una line-of-business (LOB) applicazione WPF, ho raggiunto un punto di considerare ritornare a Windows Form per il mio progetto, e nella ricerca le opinioni di altre persone, mi sono imbattuto in questo thread...

Sì, WPF è una tecnologia brillante e ha benefici che si estendono ben oltre la semplice eye-candy...il template e funzionalità di associazione sono ottimi esempi.L'oggetto intero modello offre maggiore flessibilità e più ampie possibilità.Che, tuttavia, non, rendono de facto piattaforma per future applicazioni LOB.

I "problemi" che WPF risolve in termini di separazione GUI dalla logica di business non sono problemi che non possono essere prontamente risolto in Windows Form partendo semplicemente con la giusta architettura e la mente-set.Anche l'oggetto del percorso di funzionalità di associazione di WPF può essere riprodotto in Windows Form con alcuni molto semplici classi di supporto.Il modello di dati capacità di WPF, sono molto bello, ma ancora non sono nulla di che non è possibile simulare in Windows Form in quelle rare occasioni in cui assolutamente non si sa esattamente quali oggetti si sta andando a rappresentare in una qualsiasi parte dello schermo.

Dove Windows Form gare a venire in termini di maturità.Si può oscillare un gatto morto su Google senza colpire alcuni blog dove qualcuno ha risolto un Windows Form problema per voi.WPF, invece, è relativamente meno risorse di apprendimento disponibili, un minor numero di controlli personalizzati disponibili, e lui non ha avuto, come molti dei suoi problemi di dentizione risolto.

Al culmine di fare un WPF vs Windows Form decisione ha ottenuto di essere la scadenza dell'ambiente di sviluppo.Windows Form editor sono slick, reattiva e intuitiva.Feedback sugli errori ottiene immediatamente, le soluzioni sono di solito evidente, e la compilazione->debug->modifica ciclo in Windows Form è molto veloce.

Le applicazioni WPF, invece, sono relativamente patetico supporto in fase di progettazione, con la vista di progettazione troppo pronto a pollo fuori al primo incontro di un errore, che spesso richiedono un progetto di costruzione dopo il fix prima che il designer è disposto a calciare di nuovo.Drag'n'drop di componenti dalla casella degli strumenti potrebbe anche non essere supportato, data la vasta gamma di circostanze in cui non funziona affatto, o rese completamente istintivo risultati.Nonostante la promessa del WpfToolkit, non c'è ancora utilizzabile DataGrid per WPF che produce qualsiasi tipo di resonable di prestazioni o di progettazione amicizia.

Il debug di applicazioni WPF è un po ' come la vecchio ASP.NETTO il debug di paradigma...hit F5 -> wait -> avvio -> errore -> stop -> fix -> colpo F5 -> wait -> avvio -> errore -> gemito -> stop -> fix -> colpo F5....Tutti XAML cui è in esecuzione il programma è bloccato, e rintracciare XAML specifici problemi, è spesso noioso.

La linea di fondo, semplicemente, è che gli strumenti di sviluppo per Windows Forms stanno per avere voi a sbattere front-end in una frazione del tempo di un'applicazione WPF... in particolare se si sta creando master-detail griglie o un foglio di calcolo come interfacce, che la maggior parte LOB hanno.Con Windows Form, si inizia con il 90% del lavoro è già fatto per voi.

Io sono un grande fan di architettura WPF.Vorrei solo che la fase di progettazione set di strumenti, non aveva voglia di una pre-alpha di debug build.


Edit:Questa risposta è stato pubblicato su .NET 3.5 + Visual Studio 2008, ma .NET 4.0 con Visual Studio 2010 viene fornito con un WPF griglia di dati.Mentre molti miglioramenti sono stati fatti per il nuovo WPF esperienza di sviluppo, la mia risposta qui rimane invariato, e vorrei aggiungere il seguente suggerimento:

Se siete in una fretta di farlo RAD sviluppo, andare con Windows Form.Se stai cercando di produrre un ben architettato, gestibile e scalabile, risorsa disponibile, multi-utente, con una Linea Di applicazioni di Business, prendere in considerazione ASP.NET MVC HTML + 5 + jQuery...I miei progetti con queste tecnologie hanno portato a migliori risultati, presto, per i miei clienti.MVC offre tutti lo stesso template che WPF, e jQuery consente di animazioni e interazioni complesse.Ancora più importante, un ASP.NET MVC + jQuery soluzione non richiede agli utenti finali di avere moderna desktop con grafica decente hardware.

Io sono sette mesi utilizzando WPF su quello che è ormai diventato un sistema base per il mio cliente, e mi piacerebbe condividere alcuni pensieri con voi l'esperienza di apprendimento e di utilizzo di WPF, una linea di business di presentazione della piattaforma.

In generale, i commenti che ho fatto sopra ancora tenere...Il supporto in fase di progettazione per WPF non è ancora arrivato.Se sei in una grande fretta di ottenere un'applicazione rich client fuori della porta, andare con Windows Form.Periodo.Microsoft non sono in alcun fretta di interrompere la GDI di Windows Form piattaforma, in modo da poter contare su un buon supporto per un tempo giusto per il futuro.

WPF non è facile da padroneggiare, ma che non dovrebbe essere dove potete lasciare la scelta se investire il vostro tempo e l'energia di apprendimento in WPF.Nonostante la sua mancanza di maturità, WPF è costruito attorno ad alcuni utili, concetti moderni.

In WPF, per esempio, il vostro investimento in ben scritta, business objects con il suono di convalida logica è un solido investimento.A differenza di Windows Forms, WPF dati dell'associazione è briming, con caratteristiche che consentono i controlli dell'interfaccia di reagire alle invalid input dell'utente senza scrivere codice GUI per rilevare gli errori.Questo è prezioso.

L'applicazione di stili e modelli di capacità in WPF hanno dimostrato di essere troppo preziosi.Nonostante la credenza comune che la uso solo per lo stile e modello è quello di creare sullo schermo eye-candy, la verità è che queste caratteristiche significativamente semplificare la codifica di un'interfaccia utente che dà ricco di feedback - come pulsanti di abilitare/disabilitare gli stessi di base sullo stato del sottostante livello di logica di business, o descrizioni che intelligentemente trovare il loro testo in base allo stato dell'oggetto sotto il cursore, etc.

Questi tutti aggiungere fino a incredibilmente caratteristiche utili per "niente" le applicazioni di business, per il semplice fatto che è più facile mantenere l'interfaccia congruenti con i dati sottostanti.

In breve:

  • In Windows Forms progettazione di un utente l'interfaccia, quindi scrivere il codice per auto che interfaccia utente, che generalmente include anche il codice per la vostra auto gli oggetti di dati.
  • In WPF è investire nel livello aziendale che guida i tuoi oggetti dati, quindi la progettazione di un'interfaccia che ascolta per oggetti dati.

Si tratta di un apparentemente sottile differenza, ma fa una grande differenza nella vostra capacità di ri-utilizzare il codice...il che solleva la questione:"È il Windows Form vs WPF domanda in realtà una decisione di investimento?"

(Questo sembra essere diventato il mio preferito thread).

Ci sono motivi validi per usare WPF

Assolutamente!WPF è assolutamente incredibile!Sarà un grande vantaggio per praticamente qualsiasi progetto, perché ha così tante funzioni e capacità che Windows Form manca.

Per le applicazioni aziendali più grandi vittorie saranno:

  • Il fantastico e l'associazione dei dati di templating fanno la differenza.Una volta che un decente modello di dati è a posto, ci vogliono solo pochi clic per creare un modello di dati e di utilizzo Expression Blend per configurare esattamente come l'oggetto sarà guardare utilizzando il drag-and-drop.E il legame con cose come il colore o la forma è banale.
  • Il layout dello schermo è incredibilmente flessibile.Non solo è possibile tutto ciò in WPF uniformemente regolare la dimensione del contenitore e cambiamenti di forma, ma gli articoli possono, ovviamente, essere allargata e ruotato, e anche di estendere al di fuori del loro contenente telaio.
  • Oggetti di uso comune, possono essere presentate in qualsiasi modo ti piace, può facilmente avere diverse presentazioni in diverse schermate, è possibile condividere la presentazione, e di adeguare la loro presentazione alle variazioni nei valori dei dati.
  • Se avete bisogno di stampare, rendendo la stampante è banale.Configurato correttamente, WPF fa Crystal Reports o SQL Server Reporting Services (SSRS) l'aspetto di un giocattolo per bambini.
  • L'interfaccia utente sarà guardare e sentire molto più dinamici, tra cui belle caratteristiche come i bottoni che si animano quando si passa il mouse su di loro.

Per le utility e giochi, altri vantaggi venuto alla ribalta:

  • Si può facilmente aggiungere forme, linee, arbitrario e disegni per la vostra applicazione senza utilizzare un editor esterno.Ogni componente di questi possono essere associati a dati e animato, o controllati da codice.In Windows Form, di solito solo per importare bitmap e usarlo così com'è a meno che non si vuole andare a un sacco di lavoro.
  • Le animazioni sono cool!Gli utenti saranno davvero impressionato, purché non esagerare.Essi possono anche aiutare le persone a vedere che cosa sta succedendo e per ridurre la necessità di hilighting.Per esempio, quando si trascina un oggetto che si può animare l'obiettivo di mostrare che cosa accadrà se si cadere.
  • Colori, riempimenti a gradiente, pennelli, colori, caratteri di fantasia, la rotazione di oggetti, piastrelle, pennelli, etc.Tutto quello che vuoi graficamente è tuo per chiedere.
  • Incredibilmente personalizzabile.Ho bisogno di disegnare la ferrovia per una applicazione, quindi potrei cadere un treno su di loro.Un paio di ore più tardi ho avuto ferrovia ho potuto disegnare in qualsiasi punto dello schermo utilizzando Le curve di Bézier, e di unirsi e di passare automaticamente.

La linea di fondo è che qualsiasi notevoli dimensioni GUI si potrebbe costruire in Windows Form può essere costruito in WPF in un terzo dello sforzo (o meno) e guardare nel modo migliore.

WPF richiedono più risorse (RAM, in particolare)

Si paga un prezzo che rispetto a Windows Form, ma è una piccola.

  • RAM può andare su o giù a seconda dell'implementazione.WPF memorizza i dati in modo più efficiente in modo che singoli oggetti sono più piccoli, ma ci tendono ad essere di più oggetti in WPF che in Windows Form in modo tale saldi fuori, e si può uscire in anticipo.
  • CPU salirà rispetto a un Windows Form.Nella mia esperienza, l'aggiornamento di WPF oggetti sullo schermo richiede circa il doppio di quanto è impegnativo come un normale Windows Form per il rendering.Se la vostra applicazione trascorre la maggior parte del tempo l'aggiornamento dello schermo, WPF non può essere per voi.Ma in quel caso probabilmente non usando Windows Form o:Più gravi i giochi sono scritti direttamente DirectX.
  • Utilizzo del disco sarà un po ' meno per WPF, perché ci vuole tanto meno codice di Windows Form.La data sarà la stessa dimensione, naturalmente.

Una nota di più sull'utilizzo della CPU:Animazioni e trasformazioni (di movimento, di traduzione, etc.) è in realtà più efficiente, WPF che in Windows Form a causa della sua mantenuta la modalità di archiviazione.È l'iniziale di ottenere degli oggetti lì che è più lento.

Costi di manutenzione

WPF è un enorme vincere Windows Form quando si tratta di manutenzione.Dal momento che tutto è fatto in 1/5 più codice prima, c'è 1/5 di quanto per mantenere.Oltre a tutti gli standard roba è andato così che si può mettere a fuoco il codice che effettivamente fa il lavoro.

Vantaggi di XAML

XAML è il nucleo di WPF.Anche se WPF può essere utilizzato senza XAML, XAML rende incredibilmente facile da usare.XAML è HTML possibilità di specificare un utente, interfaccia, ma la sua built-in tag sono molto più potenti, e si può facilmente definire il proprio.(In realtà, è normale fare così).

Alcuni vantaggi specifici di XAML:

  • La vostra intera interfaccia è definita in un file di testo che è facile da leggere e da utilizzare, sia per gli utenti e strumenti
  • MarkupExtensions consentono di specificare le Associazioni in modo semplice e chiaro
  • Tipo di convertitori permettono di proprietà con tipi complessi per essere facilmente specificato.Per esempio, si può dire Pennello="Green" o è possibile specificare un pennello sfumatura radiale con tre fermate.
  • È possibile creare i propri elementi
  • Si può facilmente sfruttare WPF potente ", allegate proprietà"

Altri approfondimenti

Ho sognato qualcosa di simile a WPF per molti anni.Molte persone hanno implementato porzioni di questa funzionalità, ma per avere tutto in un luogo e ad un prezzo ($0) è incredibile.

WPF è un enorme cambiamento di paradigma da Windows Form e ci vorrà del tempo per abituarsi, ma il tempo di apprendimento pagherà per se stessa tante volte.

WPF ha ancora un paio di verruche anche solo cinque anni più tardi, ma il suo potere sarà totalmente soffiare via una volta che si verificano.Se qualcuno cerca di trascinare indietro a Windows Form, dovrai solo andare scalciando e urlando.

Suggerimenti:- Ottenere una copia di Expression Blend per lo sviluppo - Modifica XAML a mano occasionalmente - Non rinunciare quando sembra strano in un primo momento

WPF richiede Windows Vista o Windows XP SP2, che non è un oneroso obbligo, ma si tratta di un rilievo.Se si desidera eseguire su Windows 2000 (che alcune persone ancora fare), quindi WPF non funziona per voi.

WPF è anche una tecnologia più recente e non, come dimostrato come Windows Form in modo che si può scegliere Windows Forms una opzione meno rischiosa, in particolare per applicazioni di grandi dimensioni.

Detto questo, sì WPF è il futuro.Visual Studio 2010 è riscritta in WPF, che sarà probabilmente la più grande applicazione WPF data e sarà anche un vero banco di prova per la tecnologia.

Ovviamente, eredità di applicazioni Windows Form, sarebbe un'altra situazione in cui è la scelta giusta.

Come altri hanno detto, ci sono vantaggi e svantaggi in entrambi i casi qui.I vantaggi di WPF, come altri hanno detto, includono:

  • La capacità di fare molto ricco di Interfacce utente relativamente facilmente.
  • Più facile di animazione e di effetti speciali
  • Modularità intrinseca (uso Windows Vista lo strumento lente di ingrandimento su una applicazione WPF, e in un'applicazione Windows Form:Nota che, in applicazione WPF, tutta l'arte vettoriale scale splendidamente)
  • (PARERE AVVISO) che non la sento più "facile" per fare document-oriented systems in WPF

Tuttavia, ci sono svantaggi per WPF, Windows Form è:

  • WPF nella casella di controllo suite è molto più limitata rispetto a quella di Windows Form.
  • C'è un maggiore supporto nel controllo di terze parti di spazio per Windows Forms.(Che cambia, ovviamente, ma pensateci:Windows Forms è stato intorno dal 2001;WPF pochi anni.Con il vantaggio di tempo, Windows Forms è un maggiore sostegno nella comunità.)
  • La maggior parte degli sviluppatori sanno già Windows Form;WPF fornisce una nuova curva di apprendimento

Infine, tenete a mente che si può creare grande, attraente e coinvolgente Interfacce utente in uno strumento, se si fa il lavoro (o utilizzare il pulsante di destro strumenti di terze parti).Alla fine della giornata, non è necessariamente meglio in tutte le circostanze.Utilizzare ciò che ritiene giusto per il progetto.

Il modello di programmazione per WPF è più aperto e flessibile rispetto a Windows Form, ma come ASP.NET MVC, richiede un po ' più di disciplina in termini di corretta esecuzione Model-View-ViewModel modelli.

Il mio primo LOB applicazione WPF finì come un'assoluta failuire, perché era un maiale di risorse che ha portato i miei utente finale, molto-portatili di fascia bassa non si fermi...e questo era, in definitiva, perché ho solo un salto con WPF + LINQ to SQL e previsto un buon risultato...e questo è dove WPF si discosta fortemente da Windows Form...In Windows Form, si può ottenere via con questo genere di cose.WPF è molto più pesante sulle risorse di Windows Form, e se non l'architetto che l'applicazione deve essere magra, si finisce con un 800-pound gorilla.

Non rifuggire da WPF...esplorare.Ma essere consapevoli del fatto che accettabile peccati di Windows Forme di codifica non produce buoni risultati in WPF.Sono fondamentalmente diversi motori, che si prestano ad fondamentalmente diversi modelli di codifica.

Ultima Parola:Se si va avanti con WPF, ben acquianted con la virtualizzazione dei dati per l'utilizzo con le liste e le griglie.Che cosa è una semplice associazione a dati ListItem o GridCell finisce per essere un palestrato logico + oggetto visivo-grafico in WPF, e se non imparare a virtualizzare, è applicazione non funzionare bene su grandi insiemi di dati.

C'è una curva di apprendimento ripida per WPF, e mi consiglia di ottenere l'ovvio libri prima (Adam Nathan, Vende/Griffiths, e Chris Anderson) e blog (Josh Smith, etc.).Basta essere preparati per questo, e assicurarsi che il progetto consente il tempo per imparare WPF.

Oltre a imparare la tecnologia, trascorrere qualche tempo a imparare i modelli utilizzati per la costruzione di applicazioni WPF. Model View ViewModel (MVVM) sembra essere quello che ha guadagnato una grande quantità di accettazione.

Personalmente, penso che WPF è valsa la pena, ma essere avvertiti.Si noti inoltre che limitano in modo efficace agli utenti di Windows XP SP2+ e Windows Vista.Abbiamo preso questa decisione, ma si possono avere diversi requisiti.

Entrambe le tecnologie hanno i loro pro e contro.In un'applicazione di grandi dimensioni con un "classico" UI mi piacerebbe utilizzare Windows Form.In un'applicazione che richiedono una ricca interfaccia utente (skinning, animazioni, modifica dell'interfaccia utente) mi piacerebbe scegliere WPF.Si prega di controllare l'articolo WPF vsWindows Form il confronto di WPF e Windows Form.

A parte la flessibilità nella progettazione dell'interfaccia utente, ci sono alcuni vantaggi tecnici di WPF:

1.) WPF non si basa su oggetti GDI. Beh, credo che usi 2 oggetti GDI per l'istanza della finestra stessa, ma che è praticamente nulla.Sono stato coinvolto in una certa misura in una vasta interno di un'applicazione Windows Form.La gente nel nostro ufficio a volte 3 o 4 istanze contemporaneamente.Il problema è che spesso in 10.000 oggetto GDI limite inerente a Windows 2000, XP e Vista.Quando ciò accade, il sistema operativo non risponde e si inizia a vedere artefatti visivi.L'unico modo per risolverlo è quello di chiudere le applicazioni in basso.

2.) WPF utilizza la GPU. La capacità di WPF per l'off-load parte dell'interfaccia utente di elaborazione della GPU è brillante.Io mi aspetto solo questo aspetto per ottenere il meglio con il tempo.Come un ex OpenGL programming hobbista sono in grado di apprezzare il potere che deriva dalla GPU.Voglio dire, il mio $100 scheda video dispone di 112 core in esecuzione a 1.5 GHz ciascuno (e che non è il top della linea di con qualsiasi mezzo).Che tipo di potenza di elaborazione parallela può mettere qualsiasi CPU quad-core per la vergogna.

Tuttavia, WPF è ancora abbastanza nuovo.Non verrà eseguito su Windows 2000.E infatti, di un'applicazione WPF può essere lento a partire, dopo un nuovo riavvio.Parlo di tutto questo sul mio blog:http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

Credo che vale la pena di apprendimento WPF.Una volta che si sono fino a velocità, il lavoro di progettazione di maschere è molto più facile IMHO.Io non preoccupare molto il 'sexy' di roba.La maggior parte di questo è solo una moda passeggera.È possibile rendere 'normale' Winforms applicazioni in stile molto velocemente e facilmente in WPF.

L'intero concetto si presta a facili design IMO.

Io non sono d'accordo con alcune delle risposte qui.WPF è davvero adatto per linea di business (LOB) applicazioni.(Il frog design LOB client è l'esempio migliore).E oltre a tutti la possibilità di avere il vostro UI eye candy (che non è necessario nelle applicazioni di business), WPF offre molto di più per voi.

L'associazione di dati e l'applicazione di modelli caratteristiche sono superiori a Windows Form.Inoltre, offre un modo migliore per separare il codice e la presentazione.Abbiamo usato con successo WPF per 2 applicazioni LOB in squadre con non più di 2-3 sviluppatori.

Il più grande problema che si dovrà affrontare è probabilmente la ripida curva di apprendimento di WPF (rispetto a Windows Form), che diminuirà la velocità di sviluppo con gli sviluppatori non utilizzato per WPF.

Attualmente stiamo riscrivendo la nostra applicazione WPF da Windows Form.Sì, c'è una curva di apprendimento ripida e si deve "re-imparare" alcune cose, ma è così vale la pena.E combinato con WCF, ci siamo accorti che stiamo scrivendo meno codice, più veloce e più solido che mai.

Bastone con esso per un po', leggere Adam Nathan libro, e il check-out la sempre crescente libreria di controlli di terze parti come ad esempio quelli Telerik e ComponentOne.Uno negativo, a mio avviso, è che lo strumento di progettazione, Expression Blend, è molto scomodo da usare.L'ultima versione è ancora in beta, ma semplicemente non si sente di destra a quelli di noi che hanno utilizzato Visual Studio per anni.Sì, soprattutto per i progettisti, ma alcune cose proprio non si può fare in Visual Studio.

Considerare WPF se il design dell'interfaccia è importante per voi, perché WPF può offrire una migliore interfaccia utente.Ma Windows Forms è sul suo lato di anni di evoluzione, quindi è dimostrato di funzionare e si possono trovare molti esperti programmatori per quella piattaforma.

Anche la portabilità può essere un problema, WPF funziona solo con Windows XP SP2 e fino.

Inoltre, WPF ha una curva di apprendimento ripida, il che significa che non è facile fornire un prodotto di qualità e senza bisogno di particolari WPF esperienza.

Beh, una risposta è: "quando si ha il supporto 1.1 o 2.0", poiché WPF è parte di .NET 3.0.Ci sono noti OS limitazioni per WPF, e c'è un evidente competenze:se si dispone di un team di sviluppatori che sanno winforms, quindi potrebbe essere più facile girare codice robusto con winforms.Tuttavia, se si sta scrivendo un sacco di codice dell'interfaccia utente, è probabilmente vale la pena cominciando a prendere WPF a un certo punto.

WPF anche azioni molto in comune con Silverlight, quindi ha trasferibili benefici.

WPF viene fornito con molti vantaggi come la superba funzionalità di associazione dati, la separazione degli interessi, la separazione di progettazione e logica ecc...

Come sviluppatore mi piace la possibilità di definire la mia interfaccia utente utilizzando XAML come contrasto essendo legata alla progettazione Windows Form e mi sento bene sapendo che posso contare un altro designer per rendere la mia applicazione guardare bene.

Personalmente non mi interessa vecchie versioni di Windows non sono supportati, ma uno dei grandi problemi con WPF è che è non è (attualmente/mai) supportato da Mono (http://www.mono-project.com) in modo WPF app non funziona su Mac OS o Linux.(Anche se le applicazioni Silverlight sarà).

Se avete il tempo e le risorse per investire nell'apprendimento WPF, do it!Anche se si sta andando ad essere la scrittura di applicazioni Silverlight per il supporto di più sistemi operativi.

Se avete bisogno di applicazioni desktop per funzionare su più sistemi operativi bastone con SWF.

Ci sono molte differenze.Abbiamo amato WPF per:

  1. Dichiarativa, stile di programmazione.
  2. Le animazioni e le transizioni di stato
  3. Expression Blend è un grande strumento
  4. Buon supporto per lo stile.

Tuttavia, abbiamo bloccato con Windows Forms, perché:

  1. Il tempo che ci vuole per un sviluppatore per sapere quando WPF già so Windows Form.
  2. WPF non verrà eseguito su Windows 2000 o più in basso.

Il più grande considerazione al momento di decidere quale utilizzare è quello di considerare la cosa .NET Framework il vostro target di riferimento sono installati.Trovo che più persone hanno la più bassa .NET Framework versioni che supportano solo Windows Form, ma è solo una mia esperienza personale.

I vantaggi di WPF è che è molto più facile per creare carina GUI con controlli personalizzati e animazioni.WPF, inoltre, contribuisce ulteriormente serparate la presentazione e la logica livelli.Se si dispone di progettisti, permette l'allevamento di 95% di questo lavoro per non sviluppatori e che permette che i programmatori a lavorare sulla logica.Gli svantaggi sono i costi del software per le Espressioni di Miscela, e la mancanza di qualsiasi Visual Studio codice di strumenti di analisi di lavorare bene, in quanto tendono a farsi prendere in strutture chiamate nel tentativo di rendere XAML.Sono sicuro che ci sono altri, ma questi sono gli unici due che abbiamo realmente visto.

La considerazione principale è che se si vuole richiedere ai clienti di avere da installare .NET 3.0 o superiore .NET 3.5 SP1.Si otterrà alcuni niegative feedback

WPF rende molto più facile per la progettazione dei moduli di lavoro a un progettista, non uno sviluppatore in designer di abbigliamento.Se questo è qualcosa che ti piacerebbe fare, WPF è la vostra risposta.Se il classico Windows in stile pulsanti sono belle, quindi Windows Form è probabilmente la strada da percorrere.

(Risposte Multiple fare la domanda che si dovrebbe usare WPF se il design dell'interfaccia "importanti", ma che è piuttosto vago.Il design dell'interfaccia sempre "importante".)

Se si dispone di una licenza MSDN, check-out Strumenti di espressione.È stato progettato esplicitamente per WPF, esporta direttamente in Visual Studio e può contribuire a facilitare la transizione.

Se solo si occupa del supporto di Windows e non importa il tempo che ci vuole per imparare, andare con WPF.È veloce, flessibile, facile da reskin, e dispone di ottimi strumenti per lavorare con esso.

Come bonus laterali, Silverlight è basata su WPF e partenza con consente di acquisire il know-how per lavorare con gli altri.Se le cose continuano ad andare basato sul web, avere una conoscenza preliminare (e una libreria di codice esistente) per trasferire facilmente il browser (o Windows Live Mesh) potrebbe contribuire a dare il vostro software di un extra di contratto di locazione della vita.

Se si decide di andare con WPF, considerando i pro e i contro già spiegato nelle risposte di cui sopra, vi consiglio vivamente di passare attraverso questo dnrTV episodio con Billy Hollis

In DotNetRocks episodio 315, Brian Noyes discute ampiamente.

C'è un problema con il rendering del testo in WPF.Molti utenti segnalano che il pesante uso di anti-aliasing e pixel di sfumatura utilizzato cause testo sfocato.Questo è un grande affare, in alcune circostanze, e, per quanto ne so, è stato riconosciuto da Microsoft ad un certo livello.

Per gli ultimi 3 1/2 anni mi occupo di Windows Forme di sviluppo (a due aziende).Entrambe le applicazioni sono stati ampiamente utilizzati e ha finito per avere GDI problemi.Grandi applicazioni Windows Form alla fine si esaurirà le risorse GDI - causando l'utente finale reboot.

Scott è lamentarsi di Expression Blend e come non ha senso per lui come sviluppatore.La mia prima reazione a Expression Blend è stato così.Tuttavia, ora la vedo come uno strumento prezioso, ma in realtà dipende da che tipo di sviluppo sono.

Io sono dell'interfaccia utente sviluppatore che ha avuto per eseguire il Integratore ruolo, e alla fine ho trovato Expression Blend inestimabile di creare stili e modelli di controllo in modalità WYSIWYG.Io sono quasi sempre Espressione di Fusione e di Visual Studio un in esecuzione sullo stesso progetto nello stesso tempo.

Anche io penso che giocando con Expression Blend e di dare un'occhiata a XAML che viene sputato fuori è un ottimo modo per imparare le API WPF ...molto simile utilizzando la finestra di progettazione Windows Form e controllando il codice C# sputa fuori è utile per imparare ad usare quello che si sta progettando c'.

Expression Blend è utile.Fai una prova, soprattutto se si lavora sulle immagini per l'applicazione.

Una citazione da un precedente post di Marco:

  • In Windows Form la progettazione dell'interfaccia utente, quindi scrivere il codice per unità di interfaccia utente, che di solito comprende anche il codice per auto oggetti dati.
  • In WPF è investire nel livello aziendale che guida i tuoi oggetti dati, quindi la progettazione di un'interfaccia che ascolta i tuoi oggetti dati.

Direi che questa è più di una scelta di design, piuttosto che se non si utilizza Windows Form o WPF.Tuttavia, sono in grado di apprezzare alcune delle tecnologie potrebbe essere più adatto per un particolare approccio.

Solo se non si dispone di WPF competenza e non si vuole investire in essa :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top