| Michele Semprini |
Comunicazione fra VM e UI
Ciao a tutti,
In una struttura MVVM qual è il modo migliore per mandare dei comandi dal VM alla UI? nel caso specifico ho necessità di fare eseguire per esempio il "clear" di uno UserControl presente nella window (o anche solo per fare visualizzare una messagebox). Per continuare a tenere disaccoppiati i due livelli come è meglio comportarsi? Esistono dei patterns o comunque dei modi standard da seguire? grazie, Michele |
| Corrado Cavalli |
Re: Comunicazione fra VM e UI
Ci sono varie scuole di pensiero, o meglio, ne esiste in realtà una che ha nel tempo assunto nomi diversi. Personalmente ritengo che "The Simple, The Better" ecco perchè personalmente utilizzo un Mediator e faccio in modo di inviare dal VM un messaggio e far si che il receiver in questo caso il code-behind della Window) lo riceva e si occupi di di processarlo. Personalmente ritengo che operazioni tipo "Clear" o "Show MessageBox" siano a tutti gli effetti delle UI Operations e che quindi abbia senso metterle nel code-behind.
L'approccio che seguo è esattamente quello utilizzato dal MVVM Toolkit realizzato da Laurent Bugnion che trovi qui http://galasoft.ch/mvvm/testers/ installalo e crea un nuovo progetto C# (sorry, no VB yet...) usando il template che trovi nella categoria mvvm e dai un occhiata al codice di MainWindow, vedrai che implementa IMessageRecipient e nel costruttore usa: Messenger.Default.Register(this, typeof(DialogMessage)); a questo punto il VM, quando deve richiedere la visualizzazione della MessageBox non fa altro che inviare, via mediator, il messaggio DialogMessage. Ovviamente questa è una delle varie possibilità, altre alternative più 'sofisticate' (ma anche più complesse) sono quelle indicate da Mark Smith: http://www.julmar.com/blog/mark/PermaLink,guid,8b3e4279-70a5-431e-8fa3-4c1e047df311.aspx oppure questa: http://www.codeproject.com/KB/architecture/MVVM_Dialogs.aspx che è palesemente inspirata a quella precedente ;-) Ciao Corrado |
| Michele Semprini |
Re: Comunicazione fra VM e UI
Speciale, come al solito. Grazie mille!
Ho un solo grnde problema : mi servirebbe una giornata da 80/85 ore per studiare tutto quello che ci sarebbe da sapere su WPF ... |