2009-03-12 12 views
20

Per un'applicazione nuova, è meglio utilizzare WPF su Windows Form? Ho usato Windows Form prima, ma non molto WPF. Per quanto ne so, WPF è il successore di Windows Forms, giusto?È meglio utilizzare WPF su Windows Form?

L'applicazione ospiterà DirectX Windows (non WPF 3D, ma Managed DirectX e SlimDX) con molti controlli personalizzati.

EDIT: L'applicazione è un correlato 3D applicazione, editor, come modo:

Image created using the 3D painting program modo.

+0

Dipende davvero ... puoi darci più informazioni sulla tua applicazione? – Brann

+0

Dup? http://stackoverflow.com/questions/388711/when-is-winforms-the-correct-choice-vs-wpf –

+6

Non duplo - questo ha un 3D/DirectX piegato ad esso. –

risposta

11

---- EDIT 2 -----

Dato che si sta cercando per fare un editor come quello che hai mostrato, ti consiglio di aggiungere WPF ancora di più. Il mio progetto attuale ha molte caratteristiche anche su queste linee e abbiamo deciso che la possibilità di comporre WPF con contenuti Direct3D è estremamente potente. È bello poter rendere la tua scena qualsiasi cosa - non solo una finestra rettangolare. In WinForms, praticamente ci si limita a un rettangolo, e anche in questo caso si sono verificati problemi con lo spazio aereo (sottile, ma cose come problemi di sfarfallio quando i menu passano sopra il tuo hwnd, ecc.). Il compositore WPF con D3DImage elimina tutti questi problemi e consente di utilizzare l'immaginazione per costruire un'interfaccia utente molto flessibile. È possibile eseguire il rendering della scena in tempo reale sul lato di un oggetto WPF3D oppure utilizzare i controlli WPF direttamente nella parte superiore della scena d3d anziché provare a eseguire la GUI in D3D, ecc.

----- Originale ---------

Se avete intenzione di ospitare DX, potreste volerlo considerare - specialmente dal momento che vi dà la possibilità di fare composizione di scene con l'interfaccia utente e senza problemi di spazio aereo se utilizzare D3DImage.

Funziona con SlimDX e WPF.

---- EDIT -----

Per ulteriori informazioni sugli svantaggi di usare Direct3D con WinForms, ed i vantaggi di integrazione/DX WPF, vedere:

MSDN Article on Airspace

Codeproject arcticle on intro to D3DImage

+2

Grazie. Cos'è lo spazio aereo? –

4

Se si stanno scrivendo molti controlli personalizzati, sceglierei WPF. Parte del design di WPF deve essere estensibile, componibile e il risultato è che è facile scrivere comandi personalizzati.

Ho fatto un po 'di controllo personalizzato scrivendo in WinForms e può essere molto impegnativo alla volta. Il layout richiederà davvero molto tempo. Diversi weekend della mia vita sono stati pagati a WinForm Control Layout. Scrivere i controlli equivalenti in WPF è stato un gioco da ragazzi.

1

AFAIK WPF è il successore di WinForms, giusto?

Non credo che questo sia vero tanto quanto MS potrebbe voler spingere questo. C'è troppo codice scritto su Winforms per essere una cosa realistica in un futuro prossimo o anche un po 'distante.

Quindi con questo in mente, se ti piacerebbe, e puoi permetterti di passare il tempo ad imparare il WPF, lo farei. Altrimenti userei Winforms.

+0

Bene, Vista era il successore di XP, ma non era pensato per rendere defunte tutte le piattaforme Vista. WPF era ed è destinato dalla MS a rinnovare i fondamenti di WinForms mentre soddisfa la stessa nicchia. – DevinB

+0

Sarai sorpreso, penso! –

17

Abbiamo trattato questa domanda circa 9 mesi fa. Abbiamo deciso di andare con WPF e finora siamo contenti della decisione. Sì, c'è una curva di apprendimento. È abbastanza considerevole, specialmente da WinForms, dove hai così tanto da disimparare. Ti consiglio anche di avere accesso a un designer, altrimenti la tua applicazione sembrerà probabilmente un po 'squallida. Preparati anche per alcuni trucchi del WPF che ti faranno passare ore a grattarti la testa dicendo "perché è stato così difficile?"

Ma WPF è un passo avanti. L'associazione dei dati, il template e il controllo completo di come vuoi che le tue finestre appaiano ti fanno pensare che questo fosse il modo in cui WinForms avrebbe dovuto essere originariamente.

Oh sì, e sii pronto a sborsare un paio di dollari per alcuni controlli mancanti. Ci sono un paio di cose mancanti come un selettore di date e con caselle di controllo sui controlli ad albero (in realtà puoi definirlo, ma non è così semplice come winforms a tale riguardo). 3.5 SP1 include ora un controllo di rete, per fortuna.

Sono sicuro che mi manchi un po 'di più, ma è quello che riesco a tirar fuori dalla cima della mia testa.

Buona fortuna!

+0

Sia il DatePicker che il DataGrid fanno parte del WPF Toolkit, che richiede .NET 3.5SP1. http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22567 Aggiornamento – Andy

+0

: WPF ora ha molti nuovi controlli, vedi http://weblogs.asp.net/scottgu/archive/2009/10/26/ wpf-4-vs-2010-and-net-4-0-series.aspx – gideon

3

Abbiamo appena esaminato anche questo ... abbiamo iniziato a passare a WPF su WinForms. Penso che in questi giorni sia una decisione piuttosto semplice mettere WinForms alle tue spalle. Gli strumenti stanno migliorando e se riesci ad avere un vero designer nel tuo team ci sono pochissime cose che non puoi mettere insieme.

Stiamo iniziando a renderci conto che il nostro futuro non è in realtà WPF, ma è Silverlight. Con la maturità di Silverlight sta diventando sempre più alla pari con WPF e consente di eseguire più piattaforme. Il percorso di Silverlight è più simile ad Adobe Air e un giorno vivrà fuori dal browser (in realtà puoi farlo ora, ma è un dolore). Penso davvero che il futuro di .NET UI sarà Silverlight.

2

In questo caso, direi seguire l'esempio del proprio fornitore (ad esempio Microsoft). La loro produzione interna è sempre più caratterizzata da WPF; e la sua portata (pensa Silverlight) e la profondità sono chiaramente maggiori di WinForms. Lo usano anche sempre più in riferimento alle Best Practices. Da tutte le prove (qui e altrove), sembra essere pronto per lo sviluppo del Prime Time.

Non hai una particolare affinità per WinForms (non immagino che cosa c'è in base alla familiarità). Avrai bisogno di passare alla fine. Un nuovo progetto sarebbe un ottimo punto di partenza per il processo, a parità di tutto il resto.

2

Dopo aver appena realizzato un prodotto molto simile (visualizzatore 3D per dati di data mining in WPF) posso sicuramente consigliare WPF/SlimDX.

Gli strumenti sono un po 'trascurati (in particolare Visual Studio), ma WPF rende molto più semplice creare un'app con un po' di Zing, piuttosto che il grigio di controllo predefinito che molte cose hanno.

Utilizzando D3DImage da 3.5SP1 è molto facile ospitare un dispositivo SlimDX all'interno di un controllo.

Nel complesso, direi che WPF non è migliore da usare, solo diverso. Alcune cose sono migliori, altre sono peggio. Ma è sicuramente il futuro.

6

Ho scoperto che una volta ottenuto un controllo su Expression Blend e WPF, ero più produttivo nella creazione di interfacce utente che in Windows Form. A mio avviso questo è uno dei, se non il più importante, fattore con una nuova tecnologia/strumento; se non riesci a ottenere lo stesso risultato del vecchio strumento più velocemente con il nuovo strumento, allora tutti i campanelli e i fischietti, che utilizzi solo il 10% delle volte, non lo compenseranno.

parte che ci sono altri vantaggi WPF ha più moduli:

  • Avendo l'interfaccia in XAML rende molto più facile da calibrare tutte quelle proprietà oscure o per tagliare e incollare una intera sezione di una controllo in un altro,

  • WPF semplifica notevolmente la modularizzazione di un'interfaccia, interrompendo il controllo dello schermo verso il basso. Le forme possono fare lo stesso, ma ho sempre trovato una battaglia,

  • Alcune delle campane e dei fischietti sono freddi. Ho trovato l'uso di animazioni (storyboard) davvero utili per le schermate di immissione dei dati in cui sono necessarie caselle di immissione diverse a seconda del prodotto scelto o di tali elementi. Con Forms dovresti creare un pannello/modulo separato per ogni schermata di inserimento dati, con WPF utilizzo un'animazione per nascondere e spostare le varie caselle di testo.

1

Nel tuo caso, WPF ha senso. Per me è un'applicazione per scelta delle applicazioni perché ci sono molte cose che puoi fare davvero bene in Windows Form (come lo sviluppo rapido di applicazioni aziendali). Sto usando WPF per scrivere una bella interfaccia grafica per un'applicazione media center (progetto personale per una console multimediale sul mio schermo al plasma da 50 pollici).

Tuttavia, se sto scrivendo un'applicazione di inserimento dati e visualizzazione, in genere utilizzo Windows Form per la velocità di sviluppo. L'editor XAML è migliore in Visual Studio 2010 ma ha ancora una strada da percorrere. Senza un riferimento non c'è l'aiuto di IntelliSense su molti attributi della proprietà, quindi è impossibile sapere che cosa ci sia dentro (è qui che trascorro molto del mio tempo a cercare di trovare quei valori, sia attraverso un libro o degli esempi sul web) . Detto questo, se si scrive WPF, è possibile creare interfacce utente molto interessanti.

16

So che questo è un vecchio post, ma penso che sia ancora una domanda valida.

Ho utilizzato WinForms per 3 anni presso la prima azienda per cui ho lavorato. C'erano alcuni ottimi programmatori lì, e hanno trovato alcuni modi molto intelligenti per fare cose molto interessanti. WinForms ha superato la prova del tempo. È una piattaforma solida, affidabile ed efficiente. Molte persone e molte aziende grandi e piccole hanno utilizzato WinForms da anni e la tecnologia si è dimostrata più e più volte. L'inerzia del genere è difficile da combattere, anche se sei Microsoft.

Ancora, WPF è sicuramente il futuro. Microsoft lo ha reso chiaro con prodotti come Visual Studio 2010 ed Expression Blend. (Nell'utilizzo di WPF per progetti interni, Microsoft è stata costretta a risolvere molti dei problemi, come il rendering dei caratteri e la velocità, che impedivano alle persone di adottarli inizialmente Visual Studio 2010 mostra che WPF è stato a lungo pronto per la produzione

Quindi, è meglio scrivere il tuo programma in WinForms o WPF? La risposta è questa: WPF. Dico questo per due ragioni: in primo luogo, perché Microsoft lo sta supportando internamente, possiamo supporre che sarà in giro per un Microsoft ci ha mostrato che è il prossimo strumento di scelta che mi porta al mio prossimo punto: è diventato superiore a WinForms (alcune persone con cui ho parlato non sono d'accordo, ma è la verità comunque, e sta diventando più ovvio ogni giorno) .WPF ha una serie di funzionalità che WinForms (probabilmente) non verrà mai assegnate, come il supporto integrato di dati stupefacenti e le animazioni basate sulla timeline che lo rendono è facile creare fantastici temi per le tue app e i progettisti accattoneranno a cambiare idea.C'è molto di più in WPF di quanto possa mai essere descritto in un commento, ma questi sono due grandi per me :)

Detto questo, so che non c'è niente che puoi fare in WPF che non puoi fare in WinForms. Puoi fare qualsiasi cosa in qualsiasi lingua se vuoi abbastanza male. Il punto è che, dove WinForm ti lascerà perlustrando google per come qualcun altro ha fatto qualcosa di interessante, WPF viene fornito con il supporto integrato per tutte le funzionalità che Microsoft considera il futuro di Windows e li mette a portata di mano.

Nel corso del tempo, le persone saranno abituate alle nuove funzionalità direttamente integrate in Windows e si aspetteranno che siano disponibili in tutte le applicazioni che utilizzano. Questo raggiungerà il punto in cui tutto ciò che non li supporta diventerà goffo, meno utilizzabile e sembrerà meno spendibile spendere soldi. (Vedo l'integrazione Touch come l'esempio più ovvio di questo: sebbene ci siano soluzioni touch screen che si agganciano a un monitor ed emulano un mouse, su qualsiasi computer, la tecnologia touch screen ha fatto molta strada e con Windows 8 che sfoca la linea tra il desktop e i dispositivi mobili, le persone probabilmente vorranno utilizzare le applicazioni in un modo che sarà eccezionalmente difficile da implementare se l'applicazione utilizza WinForms.)

Prima o poi, credo che il supporto e lo sviluppo per WinForms si fermeranno, e tutti quelli che si sono lasciati indietro saranno costretti a fare il porto, e in fretta. Tuttavia, ci sono troppi programmi là fuori che si basano su WinForms per Microsoft per essere in grado di rilasciarlo nel prossimo futuro. Chi sa cosa accadrà. Forse WinForms sarà per Microsoft ciò che i processori Itanium sono per Intel, il prodotto che ha abbastanza utenti per mantenerlo attivo, anche se ci sono soluzioni migliori disponibili. (http://arstechnica.com/business/news/2011/06/ask-ars-why-itaniumask-ars-with-xeons-improvement-why-bother-with-itanium.ars)

Quindi il mio consiglio sarebbe questo: per quanto riguarda il nuovo sviluppo, passare a WPF. Invia del personale ai corsi di formazione o lasciali giocare per un po 'in modo che possano avere un'idea migliore della tecnologia. La curva di apprendimento sarà ripida, ma fare ciò aumenterà le abilità della tua squadra perché imparando WPF, saranno anche sulla buona strada per imparare SilverLight, che è abbastanza simile a WPF per le persone che hanno familiarità con WPF per essere in grado per impararlo rapidamente, ma è progettato per il web piuttosto che per il desktop. Questo è utile perché le app riscritte in WPF saranno molto più facili da convertire in app Web in un secondo momento. WPF è nuovo, ma è stato creato per una ragione, non semplicemente per creare qualcosa che le persone possano imparare. È stato progettato per rendere le applicazioni più facili da usare, intuitive e portatili. È stato progettato per aiutare gli sviluppatori a far sì che le loro applicazioni si adattino alla nuova era dei computer.

Per quanto riguarda le applicazioni scritte in WinForms: Penso che sia sicuro assumere che WinForms sarà ancora supportato per un periodo piuttosto lungo semplicemente a causa della quantità di supporto che ha guadagnato. Vorrei raccomandare al tuo team di familiarizzare con WPF e iniziare lentamente a trasferire le tue applicazioni su WPF. Prenditi tutto il tempo che Microsoft consente e non affrettare il processo, ma ricorda sempre che, in un modo o nell'altro, i giorni di WinForms sono finiti, e anche se nessuno può essere sicuro di ciò che accadrà, il supporto per il prodotto precedente verrà eliminato non appena può essere giustificato. Anche se le applicazioni WinForms vengono mantenute in giro per molti anni, è importante ricordare che i tempi stanno cambiando e tutti noi dobbiamo cambiare con loro.

+0

+1 Bel post ... – Trap

Problemi correlati