[Desenvolvimento] Exemplo de binding usando Listbox

2

Olá pessoal, tudo bom?

Segue um post sobre como fazer o binding de uma lista de objetos (nesse caso uma lista de sabores de pizza) em um Listbox através dos recursos do XAML/WPF.

1º Passo: Preparar as classes que irão representar os dados que desejamos associar ao Listbox

Classe Sabor.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PhoneApp1
{
  public class Sabor
  {
    private int _codigo;
    public int Codigo
    {
      get { return _codigo; }
      set { _codigo = value; }
    }
 
    private string _nome;
    public string Nome
    {
      get { return _nome; }
      set { _nome = value; }
    }
 
    private string _ingredientes;
    public string Ingredientes
    {
      get { return _ingredientes; }
      set { _ingredientes = value; }
    }
 
    private bool _selecionado;
    public bool Selecionado
    {
      get { return _selecionado; }
      set { _selecionado = value; }
    }
  }
}

Classe ListaSabores.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PhoneApp1
{
  public class ListaSabores : ObservableCollection
  {
    public ListaSabores()
    {
      Add(new Sabor { Codigo = 1, Nome = "Napolitana", Ingredientes = "Ingrediente 1, Ingrediente 2, Ingrediente 3", Selecionado = false });
      Add(new Sabor { Codigo = 2, Nome = "Portuguesa", Ingredientes = "Ingrediente 1, Ingrediente 2, Ingrediente 3", Selecionado = false });
      Add(new Sabor { Codigo = 3, Nome = "Beringela", Ingredientes = "Ingrediente 1, Ingrediente 2, Ingrediente 3", Selecionado = true });
      Add(new Sabor { Codigo = 4, Nome = "4 queijos", Ingredientes = "Ingrediente 1, Ingrediente 2, Ingrediente 3", Selecionado = false });
      Add(new Sabor { Codigo = 5, Nome = "Calabresa", Ingredientes = "Ingrediente 1, Ingrediente 2, Ingrediente 3", Selecionado = false });
      Add(new Sabor { Codigo = 6, Nome = "California", Ingredientes = "Ingrediente 1, Ingrediente 2, Ingrediente 3", Selecionado = false });
    }
  }
}

2º Passo: Ajustar a página XAML onde o conteúdo será exibido

Nesse caso criamos um recurso local na página que aponta para a classe ListaSabores.cs e configuramos o Listbox para usar esse recurso local e exibir as propriedades existentes nele. Veja o código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<phone:PhoneApplicationPage
  x:Class="PhoneApp1.MainPage"
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  ...
  xmlns:local="clr-namespace:PhoneApp1" <!-- Referência ao namespace da Aplicação -->
  ...
  shell:SystemTray.IsVisible="True">
 
  <!-- Definição do recurso para a página -->
  <phone:PhoneApplicationPage.Resources>
    <local:ListaSabores x:Key="MeusDados" />
  </phone:PhoneApplicationPage.Resources>
 
  ...
  ...
     <ListBox Name="lbSabores" Height="540" ItemsSource="{StaticResource MeusDados}">
       <ListBox.ItemTemplate>
         <DataTemplate>
           <StackPanel>
             <CheckBox Height="Auto" Content="{Binding Nome}" IsChecked="{Binding Selecionado}" />
             <TextBlock Height="Auto" Text="{Binding Ingredientes}" />
           </StackPanel>
         </DataTemplate>
       </ListBox.ItemTemplate>
     </ListBox>
  ...
  ...

Espero ter ajudado!

Posts Relacionados: 

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.

  • Matheus da Mata

    cara me ajudou muito, tava travado com esse binding no listbox e vc abordou bem no ponto! valeu o/

  • Rui Moraes

    Obrigado por mais um artigo!!