MVVM light: pasa el objeto de la vista al modelo de vista
Recientemente comencé a trabajar con WPF utilizando MVVM light y tengo lo siguiente (escenario simple).
MainWindow contiene un cuadro de lista de elementos.
Cuando se selecciona uno y se hace clic en el botón, disparo un comando:
ReservoirViewerCommand.Execute(null);
En la clase de viewmodel, instalo el comando y envío un mensaje con el objeto seleccionado:
ReservoirViewerCommand = new RelayCommand(OpenReservoir);
private void OpenReservoir()
{
Messenger.Default.Send(new LaunchShowReservoirMessage(){Reservoir=SelectedReservoir});
}
dónde:
class LaunchShowReservoirMessage:MessageBase
{
public Reservoir Reservoir { get; set; }
}
La vista principal registra el mensaje y abre una nueva ventana secundaria:
private void RegisterMessages()
{
Messenger.Default.Register<LaunchShowReservoirMessage>(this,OnLaunchShowReservoir);
}
public void OnLaunchShowReservoir(LaunchShowReservoirMessage msg) {
var showReservoir = new ReservoirViewerView();
showReservoir.Show();
}
Lo que necesito es que el nuevo ViewModel (ReservoirViewerViewModel) de alguna manera pueda hacerse con el objeto pasado a través del mensaje para que luego pueda mostrar los detalles de este objeto en la ventana secundaria.
Hice un poco de depuración paso a paso y el constructor ViewModel parece nunca ser alcanzado.