Si potrebbe utilizzare il Messenger per fare questo: Invia l'utente nella UserViewModel:
Messenger.Send<User>(userInstance);
sarebbe sufficiente inviare l'utente a chiunque sia interessato.
e registrare un destinatario nella vostra CardViewModel:
Messenger.Register<User>(this, delegate(User curUser){_curUser = curUser;});
o si può anche inviare una richiesta dal vostro CardViewModel per gridare l'utente:
Messenger.Send<String, UserViewModel>("Gimme user");
e reagire in quel nella UserViewModel:
Messenger.Register<String>(this, delegate(String msg)
{
if(msg == "Gimme user")
Messenger.Send<User>(userInstance);
});
(È meglio utilizzare un enum e non una stringa in uno scenario reale:))
Perhabs puoi anche rispondere direttamente ma non riesco a verificarlo al momento.
Basta controllare questo fuori: Mvvm light Messenger
Dipende dall'implementazione dei controlli. Stai condividendo ViewModel tra le viste che si trovano sotto una vista genitore o stai semplicemente provando a condividere la proprietà/Comando tra due viste indipendenti? –
La vista in questione può essere annidata in diverse viste ma si basa su un viewmodel che deve essere in grado di accedere a una proprietà da un viewmodel indipendente. Nel mio caso concreto si tratta di un CardViewModel che deve acquisire informazioni sull'utente attualmente connesso (gestito e memorizzato in un UserViewModel indipendente) per effettuare una chiamata a un servizio web. –