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.