Pregunta

Hola me gustaría hacer crecer mi solicitud por tener unidades separadas de funcionalidad en UserControls, y luego poner varios de estos dentro de una cuadrícula ContentControls en mi página principal. I tendrá que ser capaz de comunicarse entre los controles de la cuadrícula.

Me pregunto, ¿cuál es la mejor manera para que puedan intercambiar datos. La aplicación es un diseño MVVM, con cada Usercontrol que tiene su propio modelo de vista. Cada uno de los bienes ContentControls del formulario principal 'contenido' está obligado a una propiedad en modelo de vista de la forma principal que proporciona la Usercontrol que se mostrará en que ContentControl.

Por ejemplo, digamos que quiero un navegador de archivos mejorada, por lo construyo en un control de usuario. Entonces tengo un visor de archivos en otro control de usuario. Me gustaría ser capaz de mostrar a los dos al mismo tiempo en una cuadrícula en el formulario principal. Cuando selecciono un archivo con el navegador, quiero que el archivo seleccionado esté disponible para el Usercontrol Visor.

He utilizado este diseño para que pudiera volver a usar cada trozo de funcionalidad donde quiera que lo necesitaba en la aplicación. No estoy claro sobre la mejor manera de transferir datos entre ellos, como en mi diseño que no son conscientes de la otra. ¿Algún consejo? Gracias!

¿Fue útil?

Solución

Utilice un bus de mensajes. Si está utilizando la MVVM Light Toolkit , por ejemplo, utilizar el incorporado IMessenger aplicación . Si no, es razonablemente fácil de rodar su propia cuenta.

Una vez que tenga un bus de mensajes, puede registrar los mensajes en un modelo de vista y publicar mensajes de otro. Es una forma fácil de comunicarse (cualquiera de ellos a uno o en forma de "broadcast") a través de ViewModels.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top