![]() |
![]() |
Este artigo mostra como usar a view Picker usando uma abordagem MVVM e fazendo a vinculação com dados estáticos. |
A view Picker permite selecionar um elemento de uma lista de opções e eu já publiquei dois artigos sobre esta view. Confira:
Se você não conhece o básico sobre a View Picker leia os artigos acima antes de prosseguir.
Recursos usados:
Visual Studio Community 2015 ou Xamarin Studio
Criando o projeto Xamarin Forms
Abra o VS 2017 Community e clique em New Project e a seguir escolha Cross Platform -> Mobile App (Xamarin.Forms) e informe o nome XF_PickerMVVM;
A seguir selecione a Plataforma (eu marquei somente Android) e escolha a estratégia de compartilhamento que será .NET Standard.
![]() |
Clique no botão OK.
Pronto, nosso projeto já esta criado. ( Atualmente(01/2019) a versão mais atual estável é a 3.5.0.16)
Aqui aceitamos a definição padrão que indica a página MainPage como a página que vai iniciar a nossa aplicação.
Definindo o modelo de domínio
Vamos definir um modelo de domínio criando uma pasta Model no projeto compartilhado e a seguir criando uma classe Passaro onde vamos definir propriedades que iremos usar em nosso projeto.
A seguir temos o código da classe Passaro:
namespace
XF_PickerMVVM.Model { public class Passaro { public string Nome { get; set; } public string Localizacao { get; set; } public string Detalhes { get; set; } public string ImagemUrl { get; set; } } } |
Agora vamos criar a classe PassaroData na mesma pasta onde vamos definir algumas informações que vamos vincular com os controles da MainPage em nosso projeto Xamarin Forms.
using System.Collections.Generic;
namespace XF_PickerMVVM.Model |
Definimos alguns dados estáticos e criamos uma lista de objetos Passaro estática que iremos vincular ao nosso BindingContext para exibir na view.
Definindo o ViewModel
Vamos criar uma pasta ViewModel no projeto compartilhado e nesta pasta criar a nossa ViewModel - PassaroViewModel - onde vamos definir a propriedade para a lista de objetos Passaro que vamos exibir e uma propriedade para o objeto selecionado que vai permitir exibir os detalhes de cada pássaro.
Assim para deixar o código mais legível vamos criar duas viewmodels:
1- Código da BaseViewModel
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace XF_PickerMVVM.ViewModel
{
public class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
|
2- Código de PassaroViewModel
using System.Collections.Generic;
using XF_PickerMVVM.Model;
namespace XF_PickerMVVM.ViewModel
{
public class PassaroViewModel : BaseViewModel
{
public IList<Passaro> Passaros { get { return PassaroData.Passaros; } }
Passaro selectedPassaro;
public Passaro SelectedPassaro
{
get { return selectedPassaro; }
set
{
if (SelectedPassaro != value)
{
selectedPassaro = value;
OnPropertyChanged();
}
}
}
}
}
|
Note que a propriedade Passaros retorna os dados estáticos definidos em PassaroData.Passaros, e que usamos OnPropertyChanged() herdado de BaseViewModel.
Definindo o View
A seguir inclua o código no arquivo MainPage.xaml conforme abaixo para exibir o item selecionado:
<?xml version="1.0"
encoding="utf-8" ?>
<ScrollView>
<Picker Title="Selecione um
pássaro"
<Label Text="{Binding SelectedPassaro.Nome}"
HorizontalOptions="Center"
<Image Source="{Binding
SelectedPassaro.ImagemUrl}"
<Label Text="{Binding SelectedPassaro.Detalhes}"
Style="{DynamicResource BodyStyle}"
/> </ContentPage> |
Observe que na view MainPage estamos usando os estilos dinâmicos, conhecidos como estilos de dispositivo, na classe Device.Styles.
Temos disponíveis os seguintes estilos :
Lebrando que estes estilos só podem ser aplicados a instãncias da view Label.
Agora é só alegria...
Executando o projeto iremos obter:
Pegue o
projeto completo aqui :
XF_PickerMVVM.zip (sem
as referências)
Bem-aventurados os limpos de coração, porque eles
verão a Deus;
Bem-aventurados os pacificadores, porque eles serão chamados filhos de Deus;
Mateus 5:8,9
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET
Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.Widget.ListView/
https://developer.xamarin.com/api/property/Android.Widget.ListView.Adapter/
Xamarin Forms - Criando uma página de Login (MVVM) - Macoratti
Xamarin.Forms - Introduzindo Estilos - Macoratti
Xamarin Forms - Consumindo uma Web API ASP .NET - Macoratti