Światło MVVM: przekazuj obiekt z widoku na model podglądu
Niedawno zacząłem pracować z WPF przy użyciu światła MVVM i mam następujące (prosty scenariusz).
MainWindow zawiera listę elementów.
Po wybraniu jednego z nich i kliknięciu przycisku uruchamiam polecenie:
ReservoirViewerCommand.Execute(null);
W klasie viewmodel tworzę instancję polecenia i wysyłam wiadomość z wybranym obiektem:
ReservoirViewerCommand = new RelayCommand(OpenReservoir);
private void OpenReservoir()
{
Messenger.Default.Send(new LaunchShowReservoirMessage(){Reservoir=SelectedReservoir});
}
gdzie:
class LaunchShowReservoirMessage:MessageBase
{
public Reservoir Reservoir { get; set; }
}
Mainview rejestruje wiadomość i otwiera nowe okno potomne:
private void RegisterMessages()
{
Messenger.Default.Register<LaunchShowReservoirMessage>(this,OnLaunchShowReservoir);
}
public void OnLaunchShowReservoir(LaunchShowReservoirMessage msg) {
var showReservoir = new ReservoirViewerView();
showReservoir.Show();
}
Potrzebuję, aby nowy ViewModel (ReservoirViewerViewModel) mógł jakoś przechwycić przekazany obiekt przez wiadomość, dzięki czemu będę mógł wyświetlić szczegóły tego obiektu w oknie potomnym.
Wykonałem debugowanie krok po kroku, a konstruktor ViewModel nigdy nie został osiągnięty.