nRoute è uno dei framework a supporto di applicazioni Silverlight sviluppate secondo il pattern M-V-VM. In merito, segnalo questo interessante articolo in cui si parla dell' introduzione di Reverse Commands.
Da un punto di vista pratico viene introdotta una nuova interfaccia IReverseCommand che estende la solita ICommand. Tale specializzazione permette di definire un trigger "di ritorno" dal View-Model verso la View una volta che un command è stato eseguito. L'aspetto interessante si trova quindi nel fatto che il target dell' IReverseCommand è la View e non il ViewModel.
Secondo i principi del pattern M-V-VM in Silverlight, esistono due meccanismi primari di comunicazione tra View e ViewModel:
- Cambiamenti di stato relativi a databinding tra oggetti della View e proprietà del ViewModel
- Invocazioni di azioni ( ICommand appunto ) dalla View verso il ViewModel
Se in questi scenari architetturali gli ICommand sono concepiti per essere scatenati dalla View (e gestiti nel ViewModel), l'introduzione di ReverseCommands avviene per esplicitare il meccanismo inverso sempre in un'ottica strongly-typed.