O X do Xamarin Forms — MVVM Helpers

Image for post
Image for post

Fala galera,

beleza?

Geralmente quando criamos um projeto Xamarin.Forms (sem algum framawork especifico, Prism, MVVMCross e etc…) acabamos implementando algumas classes chaves para ajudar em nosso projeto.

Uma delas é uma BaseViewModel , por exemplo, para não ficarmos repetindo código geralmente criamos uma com as implementações do INotifyPropertyChanged.

Se você não quer utilizar um framework, e prefere utilizar o Xamarin.Forms "Vanilla", então lhe apresento o mvvm-helpers !

Mvvm-Helpers foi criado pelo James Montemagno (Homem dos Plugins) para simplificar e ajudar os projetos Xamarin.Forms que utilizam MVVM ( se você não utiliza inclusive , deve ter uma morte bem dolorosa…).

Simplesmente, devemos baixar o pacote no nuget Refractored.MvvmHelpers :

Image for post
Image for post

Instale apenas no projeto compartilhado. Pronto, Não requer mais configurações :D

É aqui que podemos ver as implementações do pacote.

Para ajudar nosso exemplo, criei um service fake para obter algumas informações :

Vamos criar uma Model simples de Usuario, nela criaremos Nome, Email e uma propriedade para ordenação :

Ele devera utilizar a classe ObservableObject . A ObservableObject implementa o INotifyPropertyChanged , alem da implementação do SetProperty :

Image for post
Image for post

Em seguida vamos Implementar nossa ViewModel:

Note que nossa ViewModel esta utilizando a classe BaseViewModel, esta por sua vez alem de implementar ObservableObject vem com diversas propriedades para utilizarmos : Title, SubTitle, Icon, IsBusy, IsNotBusy, CanLoadMore.

Veja que na minha implementação eu utilizo o IsBusy para avisar que estou efetuando alguma ação. Isto ficara mais claro na View.

Duas implementações bacanas são :

ObservableRangeCollection : Possui os métodos AddRange, RemoveRange, Replace, e ReplaceRange. Com eles é possível inserir e alterar a coleção inteira, sem a necessidade de um foreach por exemplo.

Grouping : Utilizando ele é possível agrupar o conteúdo da ObservableRangeCollection com uma variável por exemplo. Note que criei um método Agrupar() e utilizo a propriedade NomeAgrupado para ordenar a lista .

Finalmente para vermos tudo em ação, vamos implementar nossa View :

Rodando!

Image for post
Image for post

Uma Mão na roda né?

Existe também uma extensão para as Tasks, adicionando a possibilidade de timeout :

Image for post
Image for post

Ajuda também :)

Dica: se não quiser utilizar o MVVM.Helpers mas quiser esta extensão para Task pode utilizar meu pacote : Xamarin.Helpers.

Para finalizar, eu gosto de utilizar frameworks sempre que possível (Prism,mvvm cross e etc). Acredito que ajuda muito em algumas funções básicas que temos que implementar na mão.

Masssss, o Xamarin.Forms puro também tem suas vantagens.. Qual ? Você sabe o que esta acontecendo no código inteiro ;).

Caso queira baixar o código utilizado no Exemplo: Clique aqui.

Quer ver outros artigos sobre Xamarin ? Clique aqui.

Espero ter ajudado!

Aquele abraço!

Written by

Microsoft MVP,Gamer, Desenvolvedor e apaixonado por tecnologia!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store