¿Cómo debo comunicarme entre ViewModels?

Estoy usando MVVM Light y he usado el sistema de mensajería empaquetado para comunicarme entre modelos de vista, ¡sin embargo, me he encontrado con un pequeño dilema! Básicamente, cuando un usuario hace clic en el registro de un cliente, se abre la vista correspondiente y, con ella, laCustomerViewModel se crea una instancia En este punto elCustomerViewModel requiere el ID de clientes seleccionado del modelo de vista anterior (ViewAllCustomersViewModel) para que pueda obtener la información de los clientes seleccionados a la que se enlaza la vista (¿aún sigue?). Así que inicialmente mi pensamiento fue también enviar esa identificación en un mensaje delViewAllCustomersViewModel (donde se selecciona el cliente a ver) a laCustomerViewModel... Sin embargo, elCustomerViewModel no se crea una instancia para poder recibir el mensaje hasta que se cargue la vista (en cuyo momento ya se ha transmitido el mensaje).

Entonces, ¿cuál sería la mejor manera de resolver este problema? Hasta ahora he considerado elCustomerViewModel enviando una solicitud a laViewAllCustomersViewModel una vez que haya sido instanciado (básicamente diciendo "Estoy listo para recibir el mensaje"), y luegoViewAllCustomersViewModel enviando la ID a laCustomerViewModel... pero ¿es este un enfoque necesario para resolver esto? Me parece un poco feo!

De lo contrario, estaba pensando, ¿hay otra forma de comunicar que pueda explicar el problema que tengo? Pero, ¿no es este el punto central del sistema de mensajería ... poder comunicarse entre modelos de vista? O ¿puedo forzar la creación de una instancia del modelo de vista en el inicio? Si es así, ¿cómo afectaría eso a laViewModelLocator?

Espero haber explicado el problema claramente, he usado nombres de modelos de vista ficticios para el propósito de la explicación ... ¡y por favor siéntase libre de editar o sugerir cualquier información adicional que desee que agregue!

Respuestas a la pregunta(5)

Su respuesta a la pregunta