Xamarin Forms - Apresentando e usando o Prism


Neste artigo vou apresentar o framework Prism e sua utilização em aplicações Xamarin Forms.

O que é o Prism ?

O Prism é um framework para criação de aplicações para WPF, UWP e Xamarin Forms, com foco em manutenção, baixo acoplamento e testes.

O Prism fornece a implementação de um conjunto de design patterns que são úteis para criar uma aplicação bem estruturada e de fácil manutenção, incluindo suporte a MVVM, Injeção de Dependencia, Commands, EventAggregator, etc

Funcionalidades específicas de plataforma são implementadas em respectivas bibliotecas apontando para cada plataforma em questão:

Plataforma Assembly Pacote
WPF  Prism.Wpf.dll  Prism.Wpf
Xamarin.Forms  Prism.Forms.dll  Prism.Forms
Windows 10 UWP  Prism.Windows.dll  Prism.Windows

Assim, o Prism para UWP e Xamarin Forms permite que você use uma abstração para a navegação entre páginas que é completamente testável, utilizando as Apis e conceitos de navegação de cada plataforma, porém do jeito MVVM!

O Prism 6 é uma versão totalmente open source do guia Prism originalmente produzido pela Microsoft Patterns & Practices.

fonte : adaptado do original  em https://github.com/angelobelchior/prism-xamarin-forms/wiki

Para saber mais sobre o Prism acesse o site : https://prismlibrary.github.io/

Você pode ver instruções para download e configuração na documentação neste link: http://prismlibrary.github.io/docs/getting-started/Download-and-Setup-Prism.html

Nosso foco será a utilização do Prism para Xamarin Forms e vamos iniciar definindo o ambiente de trabalho.

- Visual Studio 2017 Community - instale a versão mais atual   (veja o termo da licença de uso)

- Instale o Prism Template Pack  - disponível na galeira de templates do Visual Studio

Com o Prism Template Pack instalado você ganha vários snippets, tipos de páginas e projetos, um mecanismo que cria automáticamente uma ViewModel quando uma View é criada. Além disso, na criação de um novo projeto é possível escolher quais plataformas você vai querer adicionar - Android, iOS e/ou UWP.

Após instalar o pacote ao abrir o VS 2017 Community você deverá visualizar na opção New Project a opção Prism para WPF e Xamarin.Forms com os templates de projetos conforme mostra a figura baixo:

Isso significa que a instalação foi bem sucedida.

Com isso podemos iniciar o desenvolvimento de nossa primeira aplicação Xamarin Forms com o Prism.

A seguir passo a descrever a criação do projeto Xamarin Forms com Prism na versão atual me baseando nos artigos https://github.com/angelobelchior/prism-xamarin-forms/wiki/2)-Criando-um-novo-Projeto e na documentação http://prismlibrary.github.io/docs/xamarin-forms/Getting-Started.html onde estou procurando atualizar as informações.

Criando seu primeiro projeto Xamarin Forms com Prism
No VS Community 2017 selecione então Prism-> Xamarin.Forms e Prism Blank App(Xamarin.Forms) e informe o nome XF_Prims1 e clique em OK:
O template Prism Blank App vai criar um aplicativo Xamarin Forms .NET Standard com quatro projetos:
  1. Um projeto PCL para o código compartilhado
  2. Um projeto para iOS 
  3. Um projeto para Android
  4. Um projeto para UWP

O template Prism Module (Xamarin.Forms) vai adicionar um novo projeto à sua solução que vai funcionar como um módulo Prism. Ele terá uma classe definida que implementa o IModule com duas pastas para suas Views e ViewModels. Haverá uma view padrão chamada ViewA e uma classe chamada ViewAViewModel que já foi registrada com o container na classe IModule.

Ao clicar em OK será aberta a janela - Prism Project Wizard - onde você vai informar:

1 - A(s) plataforma(s) que seu projeto Xamarin Forms vai suportar

2 - Qual contâiner IoC você vai usar. As opções são :  Autofac, Dryloc e Unity

O container Dryloc vem selecionado por padrão e por enquanto é o mais recomendado.

Para este artigo eu vou selecionar apenas a plataforma Android e usar o container Dryloc.
Ao final teremos uma solução criada com a seguinte estrutura:
Foram criadas no projeto PCL as pastas:
  • ViewModels - contendo os arquivos MainPageViewModel.cs e ViewModelBase.cs
  • Views - contento o arquivo MainPage.xaml
Na pasta Views temos o arquivo MainPage.xaml cujo conteúdo vemos abaixo:

Temos uma ContentPage padrão definindo um Binding para uma propriedade Title e usando um StackLayout com uma Label com o texto: "Welcome to Xamarin Forms and Prism !"

Existe uma vinculação definida na propriedade Title da página para uma propriedade chamada Title na ViewModel MainPageViewModel.

Dessa forma, essa view MainPage.xaml esta conectada a ViewModel MainPageViewModel.cs automaticamente por meio de convenções de nomenclatura permitindo a vinculação de dados ao ViewModel.

O Prism utiliza uma convenção de nomenclatura onde por padrão se uma View se chamar MyPage, sua ViewModel deverá se chamar MyPageViewModel. Assim, o nome da ViewModel é formado pelo nome da View e o sufixo "ViewModel".

Na pasta ViewModels temos o código das ViewModels.

Abaixo vemos o código da MainPageViewModel.cs que herda da classe ViewModelBase:

Abaixo temos o código da classe ViewModelBase que herda de BindableBase e implementa as interfaces INavigationWare e IDestructible:

A classe BindableBase implementa a interface INotifyPropertyChanged que permite que a view seja capaz de fazer o bind para propriedades criadas aqui. A classe BindableBase também fornece um método SetProperty protegido para simplificar a criação dessas propriedades.

    private string _title;
    public string Title
    {
        get { return _title; }
        set { SetProperty(ref _title, value); }
    }

Toda vez que a propriedade Title for alterada, uma notificação será enviada para todas os elementos da View MainPage que estão fazendo binding para ela. No caso o título da ContentPage.

A interface INavigationAware permite que a ViewModel seja notificada quando está recebendo uma navegação ou navegando para.

Em outro artigo vou mostrar como criar uma aplicação mais funcional usando os recursos do Prism.

Deus nunca foi visto por alguém. O Filho unigênito, que está no seio do Pai, esse o revelou.
João 1:18

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti