Cześć, od niedawna uczę się WPF i MVVM klepiąc dość prosty projekt.

Trochę nie wiem jak rozwiązać taką dość prostą mogłoby się wydawać sytuację ;)
Póki co NIESTETY nie robię tego używając własnych UserControlls, na to przyjdzie czas na końcu.

Sytuacja wygląda tak:
Jedno z okien (MessagesView) ma w sobie widok konwersacji, jest to lista <ostatnia wiadomosc od useraX>, coś jak facebook
Tu akurat standardowo binduje ViewModel.
Po kliknięciu przycisku przejdź do konwersacji (GoToConversationCommand), chciałbym otworzyć nowe okno już konwersacji z danym userem.
Prosta sprawa, w Commandzie tworze okno konwersacji (new ConversationWindow() ) i przekazuję mu MessagesViewModel.ChoosenUserModel, lub nawet cały ViewModel.
W tym momencie mogę utworzyć nowy ViewModel ConversationViewModel...
No właśnie - ale ten nic nie wie o MessagesViewModel... przez co nic też nie wie o przekazanym userze

Poza tym z innych miejsc, np. na profilu użytkownika, także chciałbym umieścić przycisk "Przejdź do konwersacji" i tutaj też przekazać ChooseUserModel

Co mam począć ;) ?
Olać w tym przypadku ViewModele i logikę okna konwersacji oprzeć wprost w CodeBehind Window'a ?
Niestety gdyby w ctor'ze ConversationViewModel przekażę MessagesViewModel, albo nawet wporst ChoosenUserModel, to przy otwarciu okna konwersacji zachodzi bindowanie i tworzony jest całkiem nowy ConversationViewModel - ten już nie ma ChoosenUserModel,
a w DataContext nie przekażę przecież tego parametru w żaden sposób
Nie chcę też robić jakiś staticów widocznej w całej aplikacji, ani żadnego GodObjectu zawierający dane które kiedyś tam mogą się przydać.

No chyba że... w ConversationViewModel umieścić static'a ChoosenUserModel i odpowiedno go obsługiwać (czyścić, przypisywać, itd) ?
A może z ConversationViewModel zrobić singletona ;)?
Podejrzewam że noobowskie pytanie, ale dopiero zaczynam z MVVM-em i ogólnie z okienkami, a tutoriale które przerabiałem zakładały raczej proste przykłady niestety.

Co by było dobrą praktyką?