2 messaggi dal 24 febbraio 2009
Sono da poco alle prese con il pattern mvvm, che trovo interessante per certi versi ma molto complesso e oneroso per altri forse perché sono all'inizio.
Tra i vari problemi uno mi sta assillando in particolare:
come gestire diverse finestre all'interno della stessa applicazione.
Mi spiego meglio.
In rete ho fatto molte ricerche, ma ho trovato sempre esempi banali con applicazioni che usano soltanto una finesta.
Nell'esempio allegato al WPF MVVM Toolkit su codeplex c'è un esempio molto interessante (il messenger.demo) che apre le viste relative alle conversazioni monitorando la ObservableCollection conversations, e, quando ne viene aggiunta una, crea la vista relativa.
In un altro esempio invece la vista viene creata nel codebehiond della vista stessa, oserei dire in modo classico
In altro ancora invece la vista è creata in un Command nel ViewModel.
Qualcuno mi può chiarire quale è l'implementazione più coerente con il pattern MVVM?

Grazie
Domanda molto interessante  . Siccome la vista dovrebbe conoscere il viewmodel, ma il viewmodel non dovrebbe conoscere la view, l'ipotesi di creare la window nel viewmodel è da scartare.
Quella del code behind invece è pulita perché è la view che istanzia la finestra e il viewmodel ma l'azione che lo farebbe sarebbe un normale handler, invece dei command del viewmodel, rendendolo un po' bruttino.
La soluzione del toolkit mi piace, ma forse non sempre applicabile.
Un'altra possibile soluzione è preparare un evento sul viewModel ad indicare che necessiti di aprire una nuova view, la view principale la intercetta e fa il resto, mantenendo la testabilità.
A questo punto decidere è solo una questione di quanto vuoi restare puro puro. Probabilmente opterei per la soluzione del toolkit, usando un manager come punto di contatto tra view e model, magari usando IOC così in fase di test non mostri nessuna finestra.

Tieni duro con questo pattern perché vedrai che paga molto se sfrutti a pieno le potenzialità di WPF

Ciao

Il mio blog
Homepage
2 messaggi dal 24 febbraio 2009
La soluzione degli eventi è quella che sto utilizzando, ho trovato un link molto interessante: si tratta di un webcast di Corrado Cavalli.

Tieni duro con questo pattern perché vedrai che paga molto se sfrutti a pieno le potenzialità di WPF


Mi piace molto il basso accoppiamento tra view e model... ma quanto codice da scrivere
Bene, mi fa piacere che non dico cavolate
Comunque se tu scrivi classi di supporto o behavior piuttosto astratti, una volta fatte le puoi usare per altri progetto, aumentando moltissimo la produttività

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.