MVVM light: передача объекта из вида в модель представления
Недавно я начал работать с WPF с использованием MVVM light, и у меня есть следующее (простой сценарий).
MainWindow contains a listbox of elements.
When one is selected and the button is clicked, I fire a command:
ReservoirViewerCommand.Execute(null);
On the viewmodel class I instantiate the command and send a message with the selected object:
ReservoirViewerCommand = new RelayCommand(OpenReservoir);
private void OpenReservoir()
{
Messenger.Default.Send(new LaunchShowReservoirMessage(){Reservoir=SelectedReservoir});
}
where:
class LaunchShowReservoirMessage:MessageBase
{
public Reservoir Reservoir { get; set; }
}
The mainview registers the message and opens a new child window:
private void RegisterMessages()
{
Messenger.Default.Register<LaunchShowReservoirMessage>(this,OnLaunchShowReservoir);
}
public void OnLaunchShowReservoir(LaunchShowReservoirMessage msg) {
var showReservoir = new ReservoirViewerView();
showReservoir.Show();
}
Что мне нужно, так это то, что новый ViewModel (ReservoirViewerViewModel) может каким-то образом получить переданный объект через сообщение, чтобы я мог затем отобразить детали этого объекта в дочернем окне.
Я сделал некоторую пошаговую отладку, и конструктор ViewModel, кажется, никогда не был достигнут.