Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Reduzir acoplamento no exemplo do exercício

Durante as aulas é comentado que a utilização do MVVM tem o intuito de reduzir o acoplamento e que a View não deve saber quem enviou a mensagem, se usamos a classe CalculadoraModelView a View passa a enxergar a ModelView, deveríamos colocar o método CalculaSoma em uma classe Model/Calculadora.cs e passar esse como sender. Correto?

   MessagingCenter.Subscribe<CalculadoraViewModel, decimal>(this, "SomaCalculada",
        (sender, msg) =>
        {
            DisplayAlert("Soma", 
            string.Format("O resultado da soma é: {0}", msg), "Ok");
        });

trocar por:

  MessagingCenter.Subscribe<Calculadora>(this, "SomaCalculada",
        (msg) =>
        {
            DisplayAlert("Soma", 
            string.Format("O resultado da soma é: {0}", msg.SomaCalculada), "Ok");
        });
1 resposta
solução!

Como dito corretamente, no MVVM a View não deve saber quem enviou a mensagem. É por isso que usamos Observers para a troca de mensagens entre o ViewModel e a View.

Quando usamos CalculadoraViewModel no Subscribe a View não "passa a enxergar o ViewModel", pois estamos apenas dizendo que nossa View vai escutar qualquer mensagem com o titulo "SomaCalculada" vinda da CalculadoraViewModel.

Perceba que a View continua a não conhecer os métodos da CalculadoraViewModel, seu único "vínculo" com o ViewModel é por meio do Observer, como o sugerido pelo MVVM.