Estoy trabajando en una aplicación MVVM grande. Estoy usando el juego de herramientas ligero MVVM para esto. La aplicación es como un navegador web con botones hacia atrás y hacia adelante. La vista principal es un control de usuario. Coloqué los botones hacia atrás y hacia adelante en el control de usuario de la vista principal. La vista principal a su vez tiene controles de usuario. Los controles de usuario cambian cuando se hace clic en los botones hacia atrás y hacia adelante. El ViewModel principal realiza un seguimiento del control de usuario actual y carga el siguiente dependiendo del clic del botón.MVVM: comunicación
Todos estos controles de usuario se cargan en función de la selección (ID) realizada en el primer paso. Digamos que la vista principal es una pantalla de búsqueda y seleccionamos un cliente. Las siguientes pantallas serían Dirección, Facturación, Solicitudes, etc. Estas pantallas no comparten ningún dato. Pero los datos son para el mismo cliente.
Entonces, ¿es una buena práctica almacenar la identificación del cliente en la vista principal? Si hago esto, debería tener un evento UserControl_Loaded vinculado a un comando, donde luego solicitaría Dirección e Información de facturación.
O puedo mover los botones (botones hacia atrás y hacia delante) a cada control de usuario en lugar de a la vista principal, pasar la identificación del cliente con el mensaje que cargaría la siguiente vista.
Cual es mejor?
Para desacoplar elementos, considere usar MVVM Light 'Messenger' para publicar mensajes' CustomerSelected' (que pueden contener un Id), en lugar de usar comandos. Sus otros controles pueden suscribirse a este mensaje. –
Mi pensamiento inicial sobre esto fue que, si los botones hacia atrás y hacia adelante están en la vista principal, dependiendo de la fuente (vista actual), necesito enviar un mensaje a los modelos de vista. Quería evitar eso (enviando un mensaje desde la vista principal dependiendo de la vista actual). Así que estaba pensando en el evento User_Control Loaded. – katie77
¿Por qué quieres evitar enviar un mensaje? –