2010-05-05 10 views
9

Tenendo presente ciò che CannibalSmith ha detto una volta - "Tutte le risposte dicono" WPF è diverso ". Questo è un enorme eufemismo: non solo devi imparare molte cose nuove - devi dimenticare tutto ciò che hai appreso da Forms. un modo completamente nuovo di fare l'interfaccia utente. "Quali sono le letture migliori per iniziare a utilizzare WPF invece di WinForms?

.. e avendo molti anni di esperienza nello sviluppo di applicazioni desktop Windows visive (VB6, Borland C++ Builder VCL, WinForms) (che è difficile da dimenticare), come posso passare rapidamente allo sviluppo per dire applicazioni WPF ben formate con Visual Studio?

Non ho bisogno di grafica boozy-woozy per dare alla mia app l'aspetto di un blockbuster hollywoodiano o di un pigiama da un milione di dollari. Ho sempre amato la pulizia dei comandi standard comuni di Windows e le linee guida per la progettazione dell'interfaccia utente, finendo ancora di più mi sono divertito con la salsa Vista Glass Aero Graphite.

Sono perfettamente soddisfatto di WinForms ma desidero che le mie applicazioni siano costruite con le tecnologie standard più efficienti e aggiornate e architetturate secondo i modelli più efficienti e flessibili di oggi e di domani, sfruttando l'interfaccia basata integrazione e riutilizzo delle funzionalità e utilizzo di tutti i vantaggi dell'hardware moderno e delle API per massimizzare prestazioni, usabilità, affidabilità, manutenibilità, estensibilità, ecc.

Mi piace molto l'idea di separare vista, logica e dati, permettendo di visualizzare sfruttare tutti i vantaggi della piattaforma (può funzionare come applet del browser Web su un thin client o come applicazione desktop su un PC con una GPU di ultima generazione), lasciando che la logica sia riutilizzata, parallelizzata e perfettamente evoluta, memorizzando i dati in una struttura ben strutturata ed il formato nel posto giusto.

Ma ... durante il passaggio da VB6 a Borland C++ Builder è stato molto semplice (non ci sono libri/tutorial necessari per accenderlo e iniziare a lavorare) (presumendo che conoscessi già C++), passare da BCB a WinForms era lo stesso senza soluzione di continuità , non mi sembra ovvio come fare con WPF.

Quindi, come posso convertirmi da uno sviluppatore WinForms in un modo corretto di pensare e fare lo sviluppatore WPF?

+1

+1 non solo per una questione interessante, ma molto ben scritto uno pure. –

risposta

2

Tenere presente che MVVM sembra adatto solo alle applicazioni a finestra singola. Mi sono tuffato in WPF sulla base dell'inesperienza e delle raccomandazioni generali che sarebbe meglio per un progetto di kiosk, specialmente uno in cui il cliente mi ha fornito le immagini di Photoshop di tutte le schermate delle applicazioni. Avere una grafica fantastica era un requisito per questo progetto e mi piaceva la vaga somiglianza di WPF con lo sviluppo web.

ho scoperto alcuni aspetti negativi

1) non c'è cosa come un toolkit ufficiale MVVM. Ce ne sono molti, tutti supportati da un individuo. Un colpo a un toolkit di Microsoft è stato messo nel dimenticatoio un anno fa e non c'è il supporto VS2010.

2) programmare un'applicazione multi Windows, una specie di semplice procedura guidata con avanti e indietro, è un incubo. Sono uscito da questo con un design pulito che definisce un delegato per ciascuna azione dell'interfaccia utente e un comando per ogni azione aziendale, ma ritengo comunque che sia troppo importante il coinvolgimento di un framework e non è possibile mostrare il risultato dei test a questo cliente si aspetta emozioni.

3) Si abbandona l'abitudine di fare doppio clic su un pulsante e aggiungere del codice. Questo lascia una sensazione fastidiosa di usare l'IDE contro la sua natura. Fondamentalmente si utilizza Visual Studio come editor di testo e un designer di interfacce, ancora con un grande aiuto dallo strumento.

Gli aspetti positivi, finora sono:

1) la definizione di componenti visuali è molto flessibile, facile e veloce e si può scegliere tra VS e Expression Blend. Le animazioni sono semplici da creare.

2) l'associazione dei dati semplifica l'applicazione. Si definisce un DataContext e collegamenti e non è necessario spostare i dati dalla business logic all'interfaccia, a condizione che si disponga di una proprietà per tutto ciò che deve essere visualizzato.

3) È possibile ridurre a zero la quantità di business logic nell'interfaccia.È facile separare il comportamento dell'applicazione dal suo aspetto, in modo da poter applicare la skin dell'interfaccia in dieci modi diversi con un minimo sforzo e testare tutta la logica senza aprire una finestra.

4) si lascia una porta aperta per andare con Silverlight se ti chiedono.

La mia conclusione è che se hai in mente un'applicazione MDI potresti trovarti nei guai. Dovresti essere consapevole del fatto che, se scegli WPF, stai arando il terreno per le generazioni future invece di salire su un treno che ti porterà lì velocemente e facilmente. Non esiste un modo stabilito di fare le cose, specialmente quelle che non sono coperte da demo.

I toolkit, tutto sommato, non sono così importanti e ognuno di loro ti servirà bene. In realtà un paio di classi di supporto sono sufficienti per iniziare e non ci sono maghi stravaganti, sta a te seguire le convenzioni.

Potresti persino crearlo da solo se alcune ore, una volta compreso ciò che è coinvolto nella logica. Il rovescio della medaglia è che dovrai capirlo bene per piegare l'applicazione a modo tuo.

Come ho detto sopra, ho dovuto imparare molto solo per mostrare una nuova vista quando fanno clic su un pulsante mantenendo il codice pulito. Prenditi il ​​tempo di vedere the videos cited elsewere on StackOverflow e ti farà risparmiare tempo.

1

Avendo avuto in WPF quest'anno, la cosa più importante per me stava imparando come utilizzare il Model View modello View-modello per separare la vista dalla logica dell'app. Come regola generale, se trovi che stai inserendo molto codice nel codice sottostante per la tua visualizzazione, allora stai "sbagliando".

Ho scoperto che provenendo da uno sfondo WinForms stavo inserendo molti gestori di eventi e facendo cose nel mio codice. Quando ho acquisito familiarità con le funzioni MVVM e WPF, ho scoperto che ero in grado di rimuovere la maggior parte del mio codice e sostituirlo con le viste che vincolavano i modelli di visualizzazione.

Era articoli come questo da Josh Smith che hanno contribuito a farmi iniziato sul percorso MVVM:

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

Una volta che hai iniziato a ottenere il blocco di visualizzazione attacchi vista di dati MVVM, uno sguardo ai comandi e in particolare all'interfaccia ICommand. Sono il meccanismo principale mediante il quale le azioni dell'utente attivano le operazioni da eseguire. Quindi, piuttosto che avere un gestore OnClick per i pulsanti, si associa la proprietà Comando del pulsante in XAML a una proprietà nel proprio modello di visualizzazione che espone un'implementazione ICommand.

mio 2c - Donovan

4
Problemi correlati