Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O ListView controlo fornece a infraestrutura para apresentar um conjunto de itens de dados usando um layout ou modo de visualização diferente. Por exemplo, pode querer mostrar os itens de dados numa tabela e também ordenar as suas colunas.
Deriva ListView de ListBox. Normalmente, os seus itens são membros de uma coleção de dados e são representados como ListViewItem objetos. O ListViewItem é um ContentControl e pode conter apenas um elemento filho. No entanto, esse elemento filho pode ser qualquer elemento visual.
Observação
Os tipos referenciados neste artigo estão disponíveis na secção de referência do Código .
A tabela seguinte lista tarefas comuns para trabalhar com o controlo ListView:
| Title | Description |
|---|---|
| Ordenar uma coluna do GridView quando um cabeçalho é clicado | Aprenda a ordenar uma coluna do GridView quando um cabeçalho é clicado. |
| Criar um modo de visualização personalizada para uma ListView | Aprenda a criar um modo de visualização personalizado para uma Vista de Lista. |
| Use modelos para estilizar uma vista de lista que utilize o GridView | Aprenda a usar modelos para estilizar um ListView que utilize GridView. |
| Criar um Estilo para o cabeçalho de coluna arrastado do GridView | Aprenda a criar um estilo para um cabeçalho de coluna GridView arrastado. |
| Mostrar conteúdos do ListView usando um GridView | Aprenda a mostrar conteúdos na Vista de Lista usando uma Vista de Grade. |
| Use gatilhos para estilizar itens selecionados numa vista de lista | Aprenda a usar gatilhos para estilizar itens selecionados numa Vista de Lista. |
| Criar Itens do ListView com uma CheckBox | Aprenda a criar ListViewItems com uma CheckBox. |
| Exibir dados usando o GridViewRowPresenter | Aprenda a mostrar dados usando o GridViewRowPresenter. |
| Agrupar itens numa ListView que implementa uma GridView | Aprenda a agrupar itens numa ListView que implemente uma GridView. |
| Estilizar uma linha numa Vista de Lista que implemente uma GridView | Aprenda a estilizar uma linha numa ListView que implemente uma GridView. |
| Altere o alinhamento horizontal de uma coluna numa ListView | Aprenda a alterar o alinhamento horizontal de uma coluna numa ListView. |
| Gerir o evento MouseDoubleClick para cada item numa Lista de Visualização | Aprenda a lidar com o evento MouseDoubleClick para cada item numa ListView. |
Estilos e modelos
Podes modificar o padrão ControlTemplate para dar ao controlo uma aparência única. Para mais informações, veja O que são estilos e modelos? e Como criar um modelo para um controlo.
Propriedade de conteúdo
O ListView controlo utiliza a Items propriedade como sua propriedade de conteúdo. Esta propriedade permite-lhe especificar os itens exibidos no controlo.
Partes
O ListView controlo não define nenhuma parte de modelo nomeada.
Quando cria um ControlTemplate para um ListView, o seu modelo pode conter um ItemsPresenter dentro de um ScrollViewer. O ItemsPresenter apresenta cada item no ListView; o ScrollViewer permite que se faça scroll dentro do controlo. Se o ItemsPresenter não for filho direto do ScrollViewer, deve atribuir o nome ItemsPresenter ao ItemsPresenter.
Estados visuais
A tabela seguinte lista os estados visuais do ListView controlo.
| Nome VisualState | Nome VisualStateGroup | Description |
|---|---|---|
| Válido | Estados de Validação | O controlo é válido e não tem erros de validação. |
| FocadoInválido | Estados de Validação | O controlo apresenta um erro de validação e tem o foco do teclado. |
| InvalidUnfocused | Estados de Validação | O controlo tem um erro de validação mas não tem foco no teclado. |
A tabela seguinte lista os estados para o ListViewItem controlo.
| Nome VisualState | Nome VisualStateGroup | Description |
|---|---|---|
| Normal | Estados Comuns | O estado padrão. |
| Disabled | Estados Comuns | O controlo está desativado. |
| MouseOver | Estados Comuns | O ponteiro do rato está sobre o comando. |
| Focused | FocusStates | O controlo tem foco no teclado. |
| Sem foco | FocusStates | O controlo não está focado no teclado. |
| Selecionados | Estados de Seleção | O item está atualmente selecionado. |
| não selecionado | Estados de Seleção | O item não está selecionado. |
| SelecionadoSem Foco | Estados de Seleção | O item está selecionado mas não tem foco no teclado. |
| Válido | Estados de Validação | O controlo é válido e não tem erros de validação. |
| FocadoInválido | Estados de Validação | O controlo apresenta um erro de validação e tem o foco do teclado. |
| InvalidUnfocused | Estados de Validação | O controlo tem um erro de validação mas não tem foco no teclado. |
Modos de visualização
Para especificar um modo de visualização para o conteúdo de um ListView controlo, defina a View propriedade. Um modo de visualização que o Windows Presentation Foundation (WPF) oferece é GridView, que apresenta uma coleção de itens de dados numa tabela com colunas personalizáveis.
O exemplo seguinte mostra como definir um GridView para um ListView controlo que exibe informação do colaborador.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
<ListView.View>
<GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information">
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}" Width="100">
<GridViewColumnHeader>Last Name
<GridViewColumnHeader.ContextMenu>
<ContextMenu MenuItem.Click="LastNameCM_Click" Name="LastNameCM">
<MenuItem Header="Ascending" />
<MenuItem Header="Descending" />
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=EmployeeNumber}" Header="Employee No." Width="100"/>
</GridView>
</ListView.View>
</ListView>
Podes criar um modo de vista personalizado definindo uma classe que herda dessa ViewBase classe. A ViewBase classe fornece a infraestrutura necessária para criar uma vista personalizada. Para mais informações sobre como criar uma vista personalizada, consulte Criar um Modo de Vista Personalizada para uma Vista de Lista.
Partilha de modos de visualização
Dois ListView controlos não podem partilhar o mesmo modo de visualização ao mesmo tempo. Se tentar usar o mesmo modo de visualização com mais do que um ListView controlo, ocorre uma exceção. Para especificar um modo de visualização que possa ser usado simultaneamente por mais de um ListView, use modelos ou estilos.
Vinculação de dados
Utilize as propriedades Items e ItemsSource para especificar itens para um controlo ListView. O exemplo seguinte define a ItemsSource propriedade para uma coleção de dados chamada EmployeeInfoDataSource.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
Num GridView, GridViewColumn os objetos associam-se a campos de dados especificados. O exemplo seguinte liga um GridViewColumn objeto a um campo de dados especificando a Binding para a DisplayMemberBinding propriedade.
GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
Dim gvc1 As New GridViewColumn()
gvc1.DisplayMemberBinding = New Binding("FirstName")
gvc1.Header = "FirstName"
gvc1.Width = 100
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
Também pode especificar a Binding como parte de uma definição de DataTemplate que utiliza para estilizar as células numa coluna. No exemplo seguinte, o DataTemplate identificado com a ResourceKey define o Binding para um GridViewColumn. Note que este exemplo não define o DisplayMemberBinding porque fazê-lo tem prioridade sobre CellTemplate.
<DataTemplate x:Key="myCellTemplateMonth">
<DockPanel>
<TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
<TextBlock.Text>
<Binding Path="Month"/>
</TextBlock.Text>
</TextBlock>
</DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
CellTemplate="{StaticResource myCellTemplateMonth}"/>
Controlo de estilo ListView
O ListView controlo contém ListViewItem objetos, que representam os itens de dados que são exibidos. Pode usar as seguintes propriedades para definir o conteúdo e o estilo dos itens de dados:
- No ListView controlo, use as ItemTemplate propriedades, ItemTemplateSelector e ItemContainerStyle.
- No ListViewItem controlo, use as propriedades ContentTemplate e ContentTemplateSelector.
Para evitar problemas de alinhamento entre células num GridView, não use o ItemContainerStyle para definir propriedades ou adicionar conteúdo que afete a largura de um item num ListView. Por exemplo, pode ocorrer um problema de alinhamento quando se define a Margin propriedade no ItemContainerStyle. Para especificar propriedades ou definir conteúdo que afeta a largura dos itens num GridView, use as propriedades da GridView classe e das suas classes relacionadas, como GridViewColumn. Para mais informações sobre como usar GridView e as suas classes de suporte, consulte GridView Overview.
Se definir um ItemContainerStyle para um controlo ListView e também definir um ItemTemplate, deve incluir um ContentPresenter no estilo para que o ItemTemplate funcione corretamente.
Não use as propriedades HorizontalContentAlignment e VerticalContentAlignment para conteúdo ListView exibido por um GridView. Para especificar o alinhamento do conteúdo numa coluna de um GridView, define-se um CellTemplate.
Referência do código
Os seguintes objetos são referenciados neste artigo:
EmployeeInfoDataSourceRecolha de dados. Se estiveres a usar o Visual Basic .NET, oWindowelemento é declarado ligeiramente diferente do que vês no código de exemplo:<Window x:Class="SDKSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="OnLoad" xmlns:ds="clr-namespace:SDKSample"> <Window.Resources> <ObjectDataProvider x:Key="EmployeeInfoDataSource" ObjectType="{x:Type ds:myEmployees}" /> </Window.Resources>EmployeeInfoclasse, que é usada como tipo para a recolha deEmployeeInfoDataSourcedados.public class EmployeeInfo { private string _firstName; private string _lastName; private string _employeeNumber; public string FirstName { get {return _firstName;} set {_firstName = value;} } public string LastName { get {return _lastName;} set {_lastName = value;} } public string EmployeeNumber { get {return _employeeNumber;} set {_employeeNumber = value;} } public EmployeeInfo(string firstname, string lastname, string empnumber) { _firstName = firstname; _lastName = lastname; _employeeNumber = empnumber; } }Public Class EmployeeInfo Private _firstName As String Private _lastName As String Private _employeeNumber As String Public Property FirstName() As String Get Return _firstName End Get Set(ByVal value As String) _firstName = value End Set End Property Public Property LastName() As String Get Return _lastName End Get Set(ByVal value As String) _lastName = value End Set End Property Public Property EmployeeNumber() As String Get Return _employeeNumber End Get Set(ByVal value As String) _employeeNumber = value End Set End Property Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal empnumber As String) _firstName = firstname _lastName = lastname _employeeNumber = empnumber End Sub End Class
Consulte também
.NET Desktop feedback