Jak mam się komunikować między ViewModels?

Używam MVVM Light i użyłem spakowanego systemu komunikatora do komunikacji między modelami widoków, jednak trafiłem na dylemat! Zasadniczo, gdy użytkownik kliknie rekord klienta, otwiera się odpowiedni widok, a wraz z nimCustomerViewModel jest tworzony. W tym momencieCustomerViewModel wymaga identyfikatora wybranych klientów z modelu poprzedniego widoku (ViewAllCustomersViewModel), aby uzyskać informacje o wybranych klientach, z którymi wiąże się widok (nadal obserwowane?). Tak więc początkowo moja myśl była zbyt przesyłająca ten identyfikator w wiadomości odViewAllCustomersViewModel (gdzie wybrano klienta do wyświetlenia) doCustomerViewModel... JednakżeCustomerViewModel nie jest tworzona instancja, aby móc odebrać wiadomość, dopóki widok nie zostanie załadowany (w tym momencie wiadomość została już wyemitowana)!

Jaki byłby najlepszy sposób rozwiązania tego problemu? Do tej pory rozważałemCustomerViewModel wysłanie prośby doViewAllCustomersViewModel po utworzeniu instancji (zasadniczo mówiąc: „Jestem gotów odebrać wiadomość”), a następnieViewAllCustomersViewModel wysłanie identyfikatora z powrotem doCustomerViewModel... ale czy jest to konieczne podejście, aby to rozwiązać? Wydaje mi się to trochę brzydkie!

W przeciwnym razie myślałem, że istnieje inny sposób komunikowania się, który może wyjaśnić problem, który mam? Ale czy nie jest to cały sens systemu przesyłania wiadomości ... aby móc komunikować się między modelami widoków? LUB czy mogę wymusić utworzenie modelu widoku podczas uruchamiania? Jeśli tak, to jak to wpłynęłoby naViewModelLocator?

Mam nadzieję, że jasno przedstawiłem ten problem, użyłem fikcyjnych nazw modeli widoków w celu wyjaśnienia ... i proszę edytować lub sugerować wszelkie dodatkowe informacje, które chciałbym, abym dodał!

questionAnswers(5)

yourAnswerToTheQuestion