Usuário com melhor resposta
Duvidas MVVM - Transportar mensagem do MODEL para a VIEW

Pergunta
-
Boa Tarde,
Sou iniciante com o padrão MVVM e estou em duvidas com relação a troca de mensagens de um objeto da camada MODEL com a VIEW.
Exemplo: Possuo uma classe na camada MODEL chamada Usuario com duas propriedades: Login e Senha. E um metodo denominado AlterarSenha. Para informar na VIEW uma string de resposta desse metodo como devo proceder?
Minha primeira ideia foi: Implementar um atributo do tipo string que representa essa mensagem de notificação e associa-lo a VIEW via binding, porem não sei se essa é a melhor prática para resolver esse problema.
Agradeco uma resposta rapida!
Tiago Carmo Santos
Respostas
-
Tiago,
Depende de que maneira você queira exibir essa mensagem. Será em um controle da View (Label, TextBlock)? Ou será um MessageBox?
E acho que você está esquecendo da ViewModel. Ao meu ver, ela será responsável por receber o retorno do Model e exibir na View.
[]'s
Edegilson S. Silva
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 9 de janeiro de 2012 21:27
-
Tiago,
caso esteja utilizando MVVM Light ToolKit, existe um objeto chamado Messenger, segue um exemplo de como ficaria o código:
View:
Page_Load
{
Messenger.Default.Register<NotificationMessage>(this, NotificationMessageReceived);
}
private void NotificationMessageReceived(NotificationMessage msg)
{
if (msg.Notification == "OK")
{
App.UsuarioLogado = viewModel.UsuarioLogado;
RegistrarListener();
NavigationService.Navigate(new PaginaPrincipal());
}
else
{
MessageBox.Show("Usuário ou Senha inválidos.", "Mensagem", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
ViewModel:
public void Logar()
{
UsuarioBLL usuarioBLL = new UsuarioBLL();
UsuarioLogado = usuarioBLL.AcessarSistema(Login, Senha);
if (UsuarioLogado.IDUsuario > 0)
{
Messenger.Default.Send(new NotificationMessage("OK"));
}
else
{
Messenger.Default.Send(new NotificationMessage("Nao"));
}
}
Daniel Benevides- Sugerido como Resposta hamiltonj quarta-feira, 19 de outubro de 2011 12:44
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 9 de janeiro de 2012 21:27
Todas as Respostas
-
Tiago,
Depende de que maneira você queira exibir essa mensagem. Será em um controle da View (Label, TextBlock)? Ou será um MessageBox?
E acho que você está esquecendo da ViewModel. Ao meu ver, ela será responsável por receber o retorno do Model e exibir na View.
[]'s
Edegilson S. Silva
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 9 de janeiro de 2012 21:27
-
Tiago,
caso esteja utilizando MVVM Light ToolKit, existe um objeto chamado Messenger, segue um exemplo de como ficaria o código:
View:
Page_Load
{
Messenger.Default.Register<NotificationMessage>(this, NotificationMessageReceived);
}
private void NotificationMessageReceived(NotificationMessage msg)
{
if (msg.Notification == "OK")
{
App.UsuarioLogado = viewModel.UsuarioLogado;
RegistrarListener();
NavigationService.Navigate(new PaginaPrincipal());
}
else
{
MessageBox.Show("Usuário ou Senha inválidos.", "Mensagem", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
ViewModel:
public void Logar()
{
UsuarioBLL usuarioBLL = new UsuarioBLL();
UsuarioLogado = usuarioBLL.AcessarSistema(Login, Senha);
if (UsuarioLogado.IDUsuario > 0)
{
Messenger.Default.Send(new NotificationMessage("OK"));
}
else
{
Messenger.Default.Send(new NotificationMessage("Nao"));
}
}
Daniel Benevides- Sugerido como Resposta hamiltonj quarta-feira, 19 de outubro de 2011 12:44
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 9 de janeiro de 2012 21:27