MVVM - Responsabilidades
O padrão MVVM consiste em três partes - Model, View e ViewModel. A maioria dos desenvolvedores no início está um pouco confusa sobre o que um Model, View e ViewModel devem ou não conter e quais são as responsabilidades de cada parte.
Neste capítulo, aprenderemos as responsabilidades de cada parte do padrão MVVM para que você possa entender claramente que tipo de código vai para onde. MVVM é na verdade uma arquitetura em camadas para o lado do cliente, conforme mostrado na figura a seguir.
A camada de apresentação é composta pelas visualizações.
A camada lógica são os modelos de visualização.
A camada de apresentação é a combinação dos objetos do modelo.
Os serviços de cliente que os produzem e mantêm ou acesso direcionado em um aplicativo de duas camadas ou por meio de chamadas de serviço e, em seguida, para seu aplicativo.
Os serviços do cliente não são oficialmente parte do padrão MVVM, mas são frequentemente usados com o MVVM para conseguir separações adicionais e evitar código duplicado.
Responsabilidades do modelo
Em geral, o modelo é o mais simples de entender. É o modelo de dados do lado do cliente que oferece suporte às visualizações no aplicativo.
É composto por objetos com propriedades e algumas variáveis para conter dados na memória.
Algumas dessas propriedades podem fazer referência a outros objetos do modelo e criar o gráfico do objeto que, como um todo, são os objetos do modelo.
Objetos de modelo devem gerar notificações de alteração de propriedade, o que no WPF significa vinculação de dados.
A última responsabilidade é a validação, que é opcional, mas você pode incorporar as informações de validação nos objetos de modelo usando os recursos de validação de vinculação de dados WPF por meio de interfaces como INotifyDataErrorInfo / IDataErrorInfo
Ver responsabilidades
O principal objetivo e responsabilidades das visualizações é definir a estrutura do que o usuário vê na tela. A estrutura pode conter partes estáticas e dinâmicas.
As partes estáticas são a hierarquia XAML que define os controles e o layout dos controles dos quais uma exibição é composta.
Parte dinâmica é como animações ou mudanças de estado que são definidas como parte da Visualização.
O objetivo principal do MVVM é que não haja nenhum código por trás na visualização.
É impossível que não haja nenhum código em vista. Em vista, você precisa pelo menos do construtor e uma chamada para inicializar o componente.
A ideia é que o código da lógica de manipulação de eventos, ação e manipulação de dados não deva estar no código por trás do View.
Existem também outros tipos de código que devem estar no código por trás de qualquer código que seja necessário para ter uma referência ao elemento de interface do usuário que é inerentemente código de exibição.
Responsabilidades do ViewModel
ViewModel é o ponto principal do aplicativo MVVM. A principal responsabilidade do ViewModel é fornecer dados para a exibição, para que a exibição possa colocar esses dados na tela.
Ele também permite que o usuário interaja com os dados e altere os dados.
A outra responsabilidade principal de um ViewModel é encapsular a lógica de interação para uma visualização, mas isso não significa que toda a lógica do aplicativo deve ir para ViewModel.
Ele deve ser capaz de lidar com a sequência apropriada de chamadas para fazer a coisa certa acontecer com base no usuário ou em quaisquer alterações na visualização.
ViewModel também deve gerenciar qualquer lógica de navegação, como decidir quando é hora de navegar para uma visualização diferente.