WPF
- Usando o controle ListView - 1
Este artigo mostra como usar o controle ListView em aplicações WPF- Windows Presentation Foundation.
Como a WPF permite a composição de componentes e devido as capacidades e características do controle ListView temos quase que infinitas possibilidades de usos deste controle em aplicações WPF. Eu vou procurar mostrar algumas delas...
Vamos começar pelo começo (risos) mostrando o básico como criar colunas, exibir dados, etc, por isso se você espera um artigo excitante talvez fique frustrado, mas a vida é assim mesmo, hoje o arroz com feijão, amanhã o camarão...
Ferramentas usadas nos exemplos do artigo:
Abra o VB 2010 Express Edition e crie um novo projeto do tipo WPF Application com o nome wpf_ListView;
Você deverá obter uma tela conforme o da figura abaixo exibindo o projeto criado;
![]() |
Para iniciar vamos criar um ListView vazio. Para isso vamos incluir o código abaixo no arquivo MainWindow.xaml usando a linguagem XAML;
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Usando ListView" Height="350" Width="525">
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="Coluna 1" />
<GridViewColumn Width="140" Header="Coluna 2" />
<GridViewColumn Width="140" Header="Coluna 3" />
</GridView>
</ListView.View>
</ListView>
</Window>
|
Veja abaixo uma visão atual do projeto:
![]() |
Observe que temos no código a seção ListView.View onde criamos um GridView e definimos 3 GridViewColumns. Usando os recursos de GridViewColumns poderemos redimensionar as colunas e usar o recurso do drag and drop para reordenar as colunas.
Vamos agora incluir alguns dados no ListView alterando o código para:
<Window x:Class="ListViewTest.Test1.ListViewTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="Datas" Height="216" Width="435">
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Width="120" Header="Data" />
<GridViewColumn Width="120" Header="Dia da Semana"
DisplayMemberBinding="{Binding DayOfWeek}" />
<GridViewColumn Width="120" Header="Ano"
DisplayMemberBinding="{Binding Year}" />
</GridView>
</ListView.View>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
</ListView>
</Window>
|
O resultado pode ser visto na figura a seguir:
![]() |
Vejamos o que/como foi implementado:
Podemos no entanto incluir os nossos próprios dados usando a linguagem XAML e algum código no arquivo code-behind. Vejamos um exemplo:
Substitua o código XAML para o seguinte código :
| <Window x:Class="ListViewTest.Test2.ListViewTest" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="{Binding RelativeSource={RelativeSource Self}}" Title="Alguns dados" Height="216" Width="435"> <StackPanel> <ListView ItemsSource="{Binding FutebolCollection}"> <ListView.View> <GridView> <GridViewColumn Width="140" Header="Time" DisplayMemberBinding="{Binding Time}" /> <GridViewColumn Width="140" Header="Treinador" DisplayMemberBinding="{Binding Treinador}" /> <GridViewColumn Width="140" Header="Jogador" DisplayMemberBinding="{Binding Jogador}" /> </GridView> </ListView.View> </ListView> <Button HorizontalAlignment="Right" Margin="5,5,5,5" Content="Incluir Linha" Name="IncluirLinha" /> </StackPanel> </Window> |
A seguir temos o código onde estamos definindo um construtor que preenche uma coleção com os dados de times de futebol referente ao treinador e o jogador.
Imports System.Windows.Controls
Imports System.Collections.ObjectModel
Namespace ListViewTest.Test2
Partial Public Class ListViewTest
Inherits Window
Private _FutebolCollection As New ObservableCollection(Of FutebolDados)()
Private Sub IncluirLinha_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles IncluirLinha.Click
_FutebolCollection.Add(New FutebolDados() With { _
.Time = "Um novo time", _
.Treinador = "Um novo treinador", _
.Jogador = "Um novo jogador" _
})
End Sub
Public Sub New()
_FutebolCollection.Add(New FutebolDados() With { _
.Time = "Flamento", _
.Treinador = "Andrade", _
.Jogador = "Adriano" _
})
_FutebolCollection.Add(New FutebolDados() With { _
.Time = "Santos", _
.Treinador = "Dorival", _
.Jogador = "Robinho" _
})
_FutebolCollection.Add(New FutebolDados() With { _
.Time = "Palmeiras", _
.Treinador = "Felipão", _
.Jogador = "Kleber" _
})
InitializeComponent()
End Sub
Public ReadOnly Property FutebolCollection() As ObservableCollection(Of FutebolDados)
Get
Return _FutebolCollection
End Get
End Property
End Class
Public Class FutebolDados
Public Property Time() As String
Get
Return m_Time
End Get
Set(ByVal value As String)
m_Time = value
End Set
End Property
Private m_Time As String
Public Property Treinador() As String
Get
Return m_Treinador
End Get
Set(ByVal value As String)
m_Treinador = value
End Set
End Property
Private m_Treinador As String
Public Property Jogador() As String
Get
Return m_Jogador
End Get
Set(ByVal value As String)
m_Jogador = value
End Set
End Property
Private m_Jogador As String
End Class
End Namespace
|
Ao executar o projeto iremos obter o seguinte resultado:
![]() |
Temos no código a definição de objetos FutebolDados que desejamos exibir no ListView. Para isso definimos a classe e o construtor onde criarmos alguns objetos usando as propriedades Time, Treinador e Jogador.
Após preencher a coleção efetuamos a vinculação via ItemSource do controle ListView.
Pegue o projeto completo aqui: Wpf_ListView.zip
WPF, Simples, simples assim...
Referências:
José Carlos Macoratti