Wie soll ich zwischen ViewModels kommunizieren?

Ich benutze MVVM Light und habe das Messenger-Paket verwendet, um zwischen Ansichtsmodellen zu kommunizieren, aber ich habe ein kleines Dilemma! Grundsätzlich wird beim Anklicken eines Kundendatensatzes die entsprechende Ansicht und damit die geöffnetCustomerViewModel wird instanziiert. An dieser Stelle wird dieCustomerViewModel erfordert die ausgewählte Kunden-ID aus dem vorherigen Ansichtsmodell (ViewAllCustomersViewModel), damit er ausgewählte Kundeninformationen erhält, an die die Ansicht gebunden ist (folgt sie noch?). Also anfangs war mein Gedanke, diese ID in einer Nachricht von der zu sendenViewAllCustomersViewModel (wo der anzuschauende Kunde ausgewählt ist) zumCustomerViewModel... jedoch dieCustomerViewModel wird nicht instanziiert, um die Nachricht zu empfangen, bis die Ansicht geladen ist (an diesem Punkt wurde die Nachricht bereits gesendet)!

Also, was wäre der beste Weg, um dieses Problem zu lösen? Bisher habe ich das überlegtCustomerViewModel Senden einer Anfrage an dieViewAllCustomersViewModel Sobald es instanziiert wurde (im Grunde gesagt: "Ich bin bereit, die Nachricht zu empfangen"), und dann dasViewAllCustomersViewModel Senden Sie die ID zurück an dieCustomerViewModel... aber ist das ein notwendiger Ansatz, um dies zu lösen? Es kommt mir ein bisschen hässlich vor!

Ansonsten dachte ich, gibt es eine andere Art zu kommunizieren, die das Problem erklären kann, das ich habe? Aber ist das nicht der springende Punkt des Nachrichtensystems ... um in der Lage zu sein, zwischen Ansichtsmodellen zu kommunizieren? ODER kann ich erzwingen, dass das Ansichtsmodell beim Start instanziiert wird? Wenn ja, wie würde sich das auf die. Auswirken?ViewModelLocator?

Ich hoffe, ich habe das Problem klar umrissen, ich habe fiktive Ansichtsmodellnamen zum Zwecke der Erklärung verwendet ... und bitte Sie, zusätzliche Informationen zu bearbeiten oder vorzuschlagen, die ich hinzufügen möchte!

Antworten auf die Frage(5)

Ihre Antwort auf die Frage