MVVM: comunicación entre el modelo y los modelos de vista

Estoy desarrollando una aplicación WPF usando el patrón MVVM. Estoy usando la biblioteca MVVM Light y también estoy tratando de usar un inyector de dependencia (estoy considerando Ninject y Unity).

He leído muchos artículos de blog y estoy bastante confundido acerca de la forma "adecuada" de hacer que mis clases se comuniquen entre sí. En particular, no sé cuándo usar la inyección de dependencia y cuándo confiar en el patrón del mediador.

Consideremos un ejemplo. Tengo un ViewModel, llamémoslo DataViewModel y la clase Data que proporciona algún tipo de datos. ¿Cómo es mejor comunicarse entre ellos?

A. ¿Inyectar una dependencia a DataViewModel con una interfaz de IData? De esta manera, los Datos no tendrán que depender de Messenger, pero tendrán que proporcionar un evento si los Datos cambian, y ViewModel tendrá que suscribirse a ellos.

B. ¿Confía en el patrón de mediador (implementado en MVVM Light como Messenger) y envía mensajes entre Model y ViewModel? De esta manera, no será necesario utilizar la inyección de dependencia, ya que toda la comunicación se basará en mensajes.

Además, ¿deberían mis ViewModels inyectar dependencias en otros ViewModels, o sería mejor confiar solo en Messenger? Si es el primero, ¿sería necesario definir una interfaz separada para cada ViewModel? Creo que definir una interfaz para cada VM será un trabajo adicional, pero quizás valga la pena.

Respuestas a la pregunta(2)

Su respuesta a la pregunta