MVVM: Comunicação entre o Model e ViewModels

Estou desenvolvendo um aplicativo WPF usando o padrão MVVM. Estou usando a biblioteca MVVM Light e também estou tentando usar um injetor de dependência (estou pensando em Ninject e Unity).

Eu li muitos artigos de blog e estou bastante confuso sobre a maneira "adequada" de fazer minhas aulas se comunicarem. Em particular, não sei quando usar a injeção de dependência e quando confiar no padrão do mediador.

Vamos considerar um exemplo. Eu tenho um ViewModel, vamos chamá-lo de DataViewModel e a classe Data que fornece algum tipo de dado. Como é melhor se comunicar entre eles:

A. Injete uma dependência no DataViewModel com uma interface do IData? Dessa forma, os dados não precisarão confiar no Messenger, mas terão que fornecer um evento se os dados mudarem, e o ViewModel precisará se inscrever.

B. Confie no padrão do mediador (implementado no MVVM Light como Messenger) e envie mensagens entre Model e ViewModel? Dessa forma, não será necessário usar a Injeção de Dependência, porque toda a comunicação será baseada em mensagens.

Além disso, meus ViewModels deveriam ter injetado dependências em outros ViewModels ou seria melhor confiar apenas no Messenger? Se o primeiro, seria necessário definir uma interface separada para cada ViewModel? Penso que definir uma interface para cada VM será um trabalho adicional, mas talvez valha a pena.

questionAnswers(2)

yourAnswerToTheQuestion