WPF - Apresentando o controle ListView
Neste artigo eu vou apresentar os conceitos básicos sobre o controle ListView da WPF.
Os exemplos usados neste artigos foram criados usando o Visual Studio 2010 beta 2.
Para criar um projeto WPF abra o VS 2010 e no menu File selecione New Project; Selecione a seguir o Template WPF Application e informe um nome sugestivo como Wpf_ListView;
Usando e abusando do controle ListView
A tag <ListView></ListView> representa o controle ListView na linguagem XAML.
Então para usar um controle ListView basta definir esta tag com algumas propriedades. Abaixo temos um exemplo:
O código XAML exibe a tag <ListView> com as seguintes propriedades:
Width e Height : Representam a largura e altura do ListView;
Name : Identifica de forma única o controle;
Margin : Informa a localização do controle ListView no controle Pai (Grid);
HorizontalAlignment e VerticalAlignment - São usadas para definir o alinhamento horizontal e vertical do controle;
Para adicionar itens no controle ListView basta usar a coleção ListsViewItem do controle definindo o atributo Contente conforme o exemplo abaixo:
Para obter o mesmo resultado via código primeiro defina em uma nova janela WPF um controle TextBox, Button e ListView conforme a figura abaixo:
A seguir defina o seguinte código no evento Click do controle Button:
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) ListView1.Items.Add(textBox1.Text) End Sub |
Executando o projeto basta digitar na caixa de texto e clicar no botão para incluir no controle ListView:
Para remover um item da coleção do controle ListView podemos usar os métodos ListView.Items.Remove ou ListView.Items.RemoveAt, onde o método RemoveAt usa o índice do item na coleção.
Vamos incluir mais um controle Button na janela Window1.xaml para podermos excluir itens do ListView conforme o código abaixo:
A seguir no evento Click do botão Button2 vamos definir o código:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) ListView1.Items.RemoveAt((ListView1.Items.IndexOf(ListView1.SelectedItem))) End Sub |
Executando o projeto podemos agora incluir e selecionar um item e clicar no botão para excluir:
Formatação e Estilo no ListView
Podemos também aplicar formatação e estilo no controle ListView
Veja no exemplo abaixo onde estamos usando os atributos ForeGround e BackGround do ListViewItem para colorir os itens.
Os atributos FontFamily, FontSize, e FontWeight são usados para definir a fonte usada do ListViewItem. Neste exemplo definimos a fonte verdane com tamanho decrescente de 15,13,11,10 e 9 e em negrito (bold).
Exibindo imagens no ListView
Vamos agora mostrar como exibir imagens em um controle ListView. Inclua uma nova janela no projeto clicando com o botão direito sobre o projeto e selecionando Add -> Window e a seguir selecione WPF Window.
Vamos incluir imagens e texto no controle ListView. Para fazer isso eu vou colocar um controle image e um controle TextBlock em um controle StackPanel.
No controle Image a propriedade Source irá definir a imagem a ser exibida, e no controle TextBlock temos a propriedade Text com o texto a ser exibido. (Lembre-se de remover a propriedade Content do controle ListView).
Para o nosso exemplo iremos obter o seguinte resultado:
O código usado é dado a seguir:
<Window x:Class="Window3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window3" Height="292" Width="338"> <Grid Height="234" Width="308"> <ListView Margin="10,45,0,13" Name="ListView1" HorizontalAlignment="Left" VerticalAlignment="Top" Width="287" Height="180" > <ListViewItem Background="Aqua" Foreground="Black" FontFamily="Verdana" FontSize="15" FontWeight="Bold"> <StackPanel Orientation="Horizontal"> <Image Source="santos.gif" Height="30"></Image> <TextBlock Text="Santos"></TextBlock> </StackPanel> </ListViewItem> <ListViewItem Background="Red" Foreground="Aqua" FontFamily="Georgia" FontSize="13" FontWeight="Bold"> <StackPanel Orientation="Horizontal"> <Image Source="santoandre.gif" Height="30"></Image> <TextBlock Text="Santo André"></TextBlock> </StackPanel> </ListViewItem> <ListViewItem Background="LightBlue" Foreground="Purple" FontFamily="Verdana" FontSize="11" FontWeight="Bold"> <StackPanel Orientation="Horizontal"> <Image Source="gremioprudente.gif" Height="30"></Image> <TextBlock Text="Grêmio Prudente"></TextBlock> </StackPanel> </ListViewItem> <ListViewItem Background="LightGreen" Foreground="Green" FontFamily="Georgia" FontSize="10" FontWeight="Bold"> <StackPanel Orientation="Horizontal"> <Image Source="saopaulo.gif" Height="30"></Image> <TextBlock Text="São Paulo"></TextBlock> </StackPanel> </ListViewItem> <ListViewItem Background="LightBlue" Foreground="Blue" FontFamily="Verdana" FontSize="9" FontWeight="Bold"> <StackPanel Orientation="Horizontal"> <Image Source="corintians.gif" Height="30"></Image> <TextBlock Text="Corinthians"></TextBlock> </StackPanel> </ListViewItem> </ListView> </Grid> </Window> |
Podemos ainda incluir outros controles no ListView como o controle checkbox.
Se desejar exibir o controle CheckBox no interior do ListView basta colocá-lo no interior do controle ListViewItems. Dessa forma para exibir um checkbox ao lado da imagem e do texto do Santos basta incluir o controle CheckBox envolvendo o StackPanel:
<CheckBox Name="SantosCheckBox"> |
Observe que eu utilizei a propriedade Name do controle CheckBox para identificar e poder usar o controle se assim for preciso.
O resultado obtido é exibido a seguir:
|
Para encerrar o artigo sobre o ListView eu vou falar um pouco sobre a vinculação de dados ou data binding.
A vinculação de dados no ListView
Em geral usamos a propriedade ItemsSource do controle ListView para vincular uma coleção IEnumerable como um ArrayList ao controle ListView.
Vamos incluir outra janela no projeto clicando com o botão direito do mouse sobre o mesmo e selecionando Add->Window e a seguir escolhendo WPF Window e clicando em Add;
Em seguida inclua um controle ListView na janela :
No exemplo do artigo primeiro eu vou definir uma função chamada CarregaListViewDados que retorna um ArrayList();
Private Function CarregaListViewDados() As ArrayList Dim lista As New ArrayList lista.Add("Santos") lista.Add("Santo André") lista.Add("Grêmio Prudente") lista.Add("São Paulo") lista.Add("Corinthians") lista.Add("Portuguesa") Return lista End Function |
Em seguida no evento Loaded criamos um arraylist que obtém os dados e atribuímos este arraylist ao ListView através da propriedade ItemsSource:
Private Sub Window4_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded Dim listaTimes As ArrayList = CarregaListViewDados() ListView1.ItemsSource = listaTimes End Sub |
Executando o projeto iremos obter:
Dessa forma dei uma visão geral sobre o controle ListView da WPF.
Pegue o projeto completo aqui: Wpf_ListView.zip
Eu sei é apenas ASP .NET , mas eu gosto...
Referências:
José Carlos Macoratti