Vogliamo iniziare a sviluppare un software desktop intermedio. Abbiamo deciso di utilizzare il WPF. Non vogliamo utilizzare il pattern MVVM. Perché non conosciamo MVVM e abbiamo anche limiti di tempo. È vero sviluppare un'applicazione WPF senza pattern MVVM (usando l'architettura a 3 livelli ma senza MVVM) Anche se ha prestazioni migliori di quelle di vincere ancora?Sviluppo software WPF senza MVVM
risposta
Non è necessario fare affidamento su MVVM quando si utilizza wpf. In realtà le chiavi utilizzando WPF correttamente sono: comandi
- uso invece di eventi (si potrebbe fare questo senza rendersene conto, ma accertarsi)
- Utilizzare l'associazione di dati invece di ottenere valori di fuori dei controlli direttamente
- impostare il contesto dei dati e si legano a che, invece di legarsi al codice dietro
MVVM funziona molto bene per queste due cose, ma non è necessario. Nello specifico, MVVM richiede una rigorosa separazione a 3 livelli di problemi che può essere eseguita altrettanto facilmente con MVP.
Per quanto riguarda le prestazioni, ciò dipende in realtà dalla piattaforma su cui viene eseguita l'app e dallo stile di codifica. Se lo si esegue su un computer senza una scheda grafica decente, WinForms probabilmente funzionerà meglio perché wpf probabilmente tornerà al rendering del software che sarà molto lento. Se hai bisogno di fare grafica 3d allora wpf è davvero la tua unica opzione.
In realtà è più simile a: utilizzare [comandi] (http://msdn.microsoft.com/en-us/library/ms752308.aspx) anziché la gestione degli eventi e l'associazione dei dati anziché l'aggiornamento imperativo. –
@ H.B. I comandi sono buoni, ma sono eccessivi per la maggior parte di ciò che faccio. Inoltre, l'associazione dei dati sostituisce la gestione degli eventi sera se si esegue tutto ciò che non è l'associazione dei dati tramite i comandi. – mydogisbox
@ H.B. Hmmm, lo riprendo. Io uso il binding con i comandi indirizzati. Non sei sicuro del motivo per cui stai opponendo vincoli e comandi. – mydogisbox
Sicuramente non devi fare affidamento su MVVM quando utilizzi WPF/Silverlight.
Per quanto riguarda la differenza di prestazioni, potrebbe dipendere dallo stile della codifica, tuttavia, se eseguita correttamente, la differenza non dovrebbe essere evidente.
Concordato, il rispetto del pattern MVVM non porta automaticamente ad una buona architettura dell'applicazione (sebbene sia di aiuto), né l'utilizzo di questo impedisce di creare applicazioni carine. Ci sono tuttavia un paio di concetti chiave in WPF con cui dovresti familiarizzare prima di iniziare la codifica, in particolare l'associazione dei dati. Ottieni un'introduzione completa nel [MSDN] (http://msdn.microsoft.com/en-us/library/aa970268.aspx). – Clemens
Non v'è alcun obbligo di utilizzare MVVM. Si può usare il visual designer per trascinare i controlli n 'drop sulla superficie del progetto. Fare doppio clic su un pulsante e ottenere un gestore di eventi nel code-behind. Non dimentichiamo le proprietà di impostazione delle proprietà & tramite il PropertyGrid. Tutto esattamente come fatto in Winforms.
Senza un collegamento dati DataContext non funziona. Se si desidera utilizzare il collegamento dati, i primi esempi che ho visto impostano il DataContext della finestra = this; nel costruttore. In questo caso, la finestra agisce come "ViewModel".
È anche possibile utilizzare MVVM con View-First. Nessun DI o IoC richiesto.
public class MyViewModel
{
}
public class MyWindow
{
public MyWindow()
{
DataContext = new MyViewModel();
}
}
Naturalmente il passaggio successivo è l'implementazione di DI/IoC utilizzando Unity.
È possibile utilizzare l'associazione dati senza impostare la proprietà 'DataContext', è sufficiente specificare la relativa sorgente (ad esempio, denominare la finestra e fare riferimento alla finestra per nome). Inoltre, se hai intenzione di utilizzare gestori di eventi come in winforms, usa solo winforms. Infine, se non hai tutto M - V - VM separato, allora non hai MVVM, hai qualcos'altro. – mydogisbox
È possibile sviluppare qualsiasi applicazione da WinForm e WPF senza Pattern di progettazione o Pattern di applicazione.
MVVM non è necessario ma risolve alcuni problemi comuni con la logica di presentazione. Ad esempio, considerare la proprietà IsBusy ViewModel.Viene impostato da qualsiasi operazione che ha una durata e può essere utilizzato da Command.CanExecute per segnalare i controlli associati per disabilitare se stessi quando qualcosa è in esecuzione. Una proprietà per la manipolazione logica e dell'interfaccia utente. Puoi pensare ad altri esempi come questo che ti guideranno verso MVVM. È quello che offre l'associazione che conta, non il modello stesso.
- 1. Wpf UserControl e MVVM
- 2. Analisi sviluppo software
- 3. Metodologia di sviluppo software
- 4. Scaffolding per WPF con MVVM?
- 5. MVVM, WPF e convalida
- 6. WPF MVVM Dubbi
- 7. MVVM + WPF + Popup = clueless
- 8. Ricerca contratti di sviluppo software
- 9. Implementazione di MVVM in WPF senza utilizzare System.Windows.Input.ICommand
- 10. WPF MVVM Modifica Proprietà Animazione
- 11. Alternativa Java MVVM e WPF
- 12. Selezione tag ComboBox WPF MVVM
- 13. MVVM WPF Dettagli principali Combobox
- 14. Database WPF Image.Source in MVVM
- 15. WPF MVVM e Test unità
- 16. WPF e MVVM. Binding Eventi
- 17. Livello di servizio MVVM WPF
- 18. WPF, MVVM, ICommand e repository
- 19. Modalità di rendering software - WPF
- 20. Come passare dallo sviluppo di software embedded allo sviluppo web?
- 21. WPF senza XAML
- 22. Avvio di WPF MVVM. Utilizzare un quadro?
- 23. Test di unità MVVM WPF per ViewModel?
- 24. MVVM conforma localizzazione nelle applicazioni WPF
- 25. Associazione dati WPF con ResourceDictionary MVVM
- 26. Carica rtf in bindable RichTexBox mvvm wpf
- 27. WPF utilizzando MVVM: DataBinding con RelativeSource
- 28. Cambia immagine utilizzando il trigger WPF MVVM
- 29. Proprietà WPF ReadOnly dependance utilizzando MVVM
- 30. Uso del comportamento in MVVM WPF?
Le applicazioni WPF * sono * applicazioni Windows, se si intende * moduli di vittoria * è necessario scrivere ... –
No, WPF è ancora molto più lento di WinForms. Il modello di progettazione è irrilevante a questo. –
senza alcuni MVVM aiuta il tuo XAML a diventare un casino molto molto veloce ... –