2009-11-20 16 views
17

Sto riscrivendo l'applicazione basata su Windows Form e userò WPF. L'applicazione fa molto affidamento sulle tecniche di trascinamento della selezione, in un ambiente molto grafico. Usa i report "Design" ecc. Trascinando gli elementi su una griglia, spostandoli, facendo clic con il tasto destro del mouse sull'impostazione delle proprietà, ecc. Che vengono tutti salvati in un database. Controlla anche il flusso del programma disegnando i diagrammi di flusso, con il routing e la creazione del testo, tutti disegnati nel modulo e di nuovo salvati in un database.Per MVVM o non per MVVM che è la domanda

MVVM si presta a questo tipo di applicazione o sto cercando di inserire un piolo rotondo in un foro quadrato.

I tuoi pensieri sono appagati.

risposta

24

Il mio obiettivo è utilizzare MVVM, ma non religiosamente.

Voglio dire, utilizzare un modello per le visualizzazioni, ma anche utilizzare un po 'di codice dietro quando necessario (trascinare & rilasciare, fare doppio clic). Trova un equilibrio che aiuti il ​​tuo sviluppo, senza farti impazzire.

+0

Grazie, penso che una miscela sia in ordine. Cerca di attenersi ai principi MVVM per i comandi, il binding e la gestione del database, ma disponi di un codice nascosto per gestire l'interazione dell'interfaccia utente più complessa. – Tim

5

MVVM si presta molto bene a WPF. Puoi eseguire il drag-drop con WPF e MVVM? Certo che puoi. Prova a cercare "WPF Drag Drop Behaviour"

1

Se stai cercando la maintianance e la testabilità delle applicazioni a lungo termine, certo che puoi fare quella roba con MVVM e WPF. oppure vai semplicemente con WPF. La curva di apprendimento iniziale di MMVM è molto ripida.

+0

Grazie, penso che una miscela sia in ordine. Cerca di attenersi ai principi MVVM per i comandi, il binding e la gestione del database, ma disponi di un codice nascosto per gestire l'interazione dell'interfaccia utente più complessa. – Tim

3

Ci sono due veramente buoni motivi per andare con MVVM:

  1. Ti aiuta a produrre la logica di business e il codice di accesso ai dati che è più facilmente unità testato
  2. Con pochissimo sforzo in più, tutto del vostro UX dovrebbe essere facile da modificare in Blend

Come diversi manifesti metioned, qualsiasi gestione degli eventi legati alla UX può essere gestito in code- dietro, ma dovresti esporre e accedere (leggere e scrivere) i dati attraverso i tuoi modelli di vista per un facile legame nelle tue visualizzazioni.

Per quanto riguarda lo sforzo extra di cui al punto 2, è possibile aggiungere facilmente una proprietà statica all'oggetto App per determinare se l'applicazione è in esecuzione rispetto a una vista aperta in Blend. Se la vista è aperta in Blend, sfrutta i dati falsi invece di effettuare chiamate di accesso ai dati. Ecco alcuni esempi di codice che funzionano per verificare se Blend ha una vista aperta:

if (Application.Current == null || Application.Current.GetType() == typeof(Application)) 
{ 
    isInDesignMode = true; 
} 
else 
{ 
    isInDesignMode = false; 
} 

Spero che questo aiuti.

+0

Grazie per la risposta. Non ho familiarità con Blend. I principi di Learning Blend, WPF e MVVM possono essere una grande curva di apprendimento. – Tim

0

Modelli come MVVM semplificano la vita. Quindi, in ogni caso, se ti senti come se il modello ti stesse dando dei momenti difficili, sentiti libero di romperlo o provare qualcos'altro. Seguire ciecamente qualcosa non ti aiuterà. Ma comunque MVVM supporta anche interazioni UI complesse come Drag and Drop, credo che i comportamenti possano aiutarti in questo. Cerca su google per WPF trascinare i comportamenti di caduta & e potresti trovare un sacco di tutorial e codice per aiutarti in questo.