Pregunta

Estoy construyendo una aplicación de WPF y tratando de ajustarse a las mejores prácticas MVVM. Estoy usando el marco href="http://mvvmfoundation.codeplex.com/" rel="nofollow noreferrer"> MVVM Fundación y notado la clase de mensajería , que he leído se debe utilizar para < a href = "https://stackoverflow.com/questions/454868/handling-dialogs-in-wpf-with-mvvm"> manejo de diálogos en WPF . Esto suena muy bien, pero yo no estoy totalmente entender cómo usar un mensajero para este propósito. Literalmente, todo lo que quiero hacer es un referente abierta Acerca de diálogo --que no tienen que pasar los mensajes de ida y vuelta.

¿La intención de la clase de mensajería que se utilizará para los casos en los cuadros de diálogo requieren un mensaje de su padre, o devolver un mensaje a su padre? ¿Es una exageración para un diálogo Acerca de? ¿Sería mejor simplemente añadiendo código a un controlador de eventos para mostrar el cuadro de diálogo?

¿Fue útil?

Solución

La idea detrás del patrón de mensajería no tiene nada que ver específicamente con la que muestran los cuadros de diálogo. La idea es simplemente para proporcionar una forma desacoplada para comunicarse entre ViewModels.

Se puede aprovechar esta infraestructura para resolver su problema, pero que tendrá que poner en práctica la proyección del diálogo mismo.

Como Phillip mostró más arriba, puede enviar mensajes entre ViewModels. Cuando su modelo de vista recibe el mensaje puede establecer su propia propiedad interna, diga "ShowDialog", true.

A continuación, puede tener un enlace de que reacciona a esta operación de cambio de propiedad y abre un cuadro de diálogo.

También he construido un marco de mensajería simple para el patrón MVVM que toma prestado de la idea de Josh (y varios otros marcos existentes) se puede leer al respecto aquí

Otros consejos

Supongamos que tiene una vista padre y una vista de diálogo. En MVVM ambos tendrían un modelo de vista. Es bueno tener estos modelos de vista desacoplados, es decir, que no tienen referencias a la otra. Y sin embargo, necesitan comunicarse entre sí. La clase mensajero actúa como un intermediario entre el Mediador o para mediar en la comunicación de información entre las dos clases. Ver el código tomado de el blog de Josh .

text alt

Aquí es objeto A. llamarlo de Registro de implementos método del mediador:. Y cuando recibo la ObjectBSaidSomething mensaje, desde el mediador, voy a almacenar en caché en los WhatObjectBSays miembros

text alt

Aquí es objeto B, que implementa: Voy a enviar un mensaje ObjectBSaidSomething. Tenga en cuenta, que el objeto B nada acerca de objetos A. No sabe nada podría ser de escucha para ObjectBSaidSomething, o 100 objetos de escucha para ObjectBSaidSomething, pero el objeto B no sabe y no le importa. Este es un buen desacoplamiento, y es por eso el patrón mediador es una buena idea. Y esta es la forma en la base MVVM está recomendando que se pasa información entre modelos de vista.

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