Arquitetura MVVM com SilVM

by Bruno12. June 2011 10:40

 

O MVVM é um pattern que foi criado em 2005 por John Gossman, um dos arquitetos do WPF e Silverlight na Microsoft. O MVVM assemelha-se em alguns aspectos o MVC (Model View Controller) e ao MVP (Model View Presenter), podemos até dizer que ele é uma especialização do MVP adaptado para a arquitetura do WPF e Silverlight. Conceitualmente, o MVVM e o MVP são idênticos, o que os diferencia é que o MVVM é específico para a arquitetura do WPF e Silverlight, e o MVP é independente de plataforma.

O funciomanento dessa arquitetura funciona basicamente da seguinte forma. A camada Model (Modelo) não conhece a View (camada de apresentação) e vice-versa. Na verdade, a View conhece a ViewModel e se comunica com ela através do mecanismo de binding. E são os avançados mecanismos de binding, eventos roteados e comandos roteados, que fazem do MVVM um pattern poderoso para construção de aplicações WPF e Silverlight.

 

Para o Silverlight ou WPF a classe ViewModel que esta no DataContext da tela fica monitorando os Componetes que estão na tela(XAML) através do recurso Bind, assim sempre que o estado dos componentes são alterados a propriedade correspondente na ViewModel é alterada também, Eliienando a necessidade se ficar mapeando os dados entre tela e Classe de entidade.

Vamos agora para a prática. Para facilitar, desemvolvi um framework e esse exemplo que estão disponiveis no CodePlex. inicialmente crie um projeto em Silverlight com a sua preferência.

Após isso adicione referência ao arquivo silvm.dll que esta no codeplex;

Crie uma classe View Model que herda de BaseVM como demostrado na figura

 

Criada essa classe crie uma classe de Entidade ficticia que supostamente sera salva em banco como na figura a seguir.

Agora basta criar a tela na aplicação.

Segue o XAML da tela na figura seguinte.

 

E o code behind da tela:

 

Note que ao pressionar o botão para salvar todas as pripriedades da variável _item ja foram modificadas e as validações ja foram todas realizadas, agora basta consultar a propriedade "errors" da variável _item.

Galera espero ter ajudado com esse meu primeiro artigo que estou postando. Abraços

Tags: , ,

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading