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 controle TreeView exibe informações em uma estrutura hierárquica usando nós recolhíveis. Este artigo apresenta os TreeView controlos e TreeViewItem fornece exemplos da sua utilização.
A ilustração a seguir é um exemplo de um controle TreeView com controles TreeViewItem aninhados:
O que é um TreeView?
TreeView é um ItemsControl que aninha os itens usando TreeViewItem controles. O exemplo seguinte cria um TreeView.
<TreeView Name="myTreeViewEvent" >
<TreeViewItem Header="Employee1" IsSelected="True">
<TreeViewItem Header="Jesper Aaberg"/>
<TreeViewItem Header="Employee Number">
<TreeViewItem Header="12345"/>
</TreeViewItem>
<TreeViewItem Header="Work Days">
<TreeViewItem Header="Monday"/>
<TreeViewItem Header="Tuesday"/>
<TreeViewItem Header="Thursday"/>
</TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="Employee2">
<TreeViewItem Header="Dominik Paiha"/>
<TreeViewItem Header="Employee Number">
<TreeViewItem Header="98765"/>
</TreeViewItem>
<TreeViewItem Header="Work Days">
<TreeViewItem Header="Tuesday"/>
<TreeViewItem Header="Wednesday"/>
<TreeViewItem Header="Friday"/>
</TreeViewItem>
</TreeViewItem>
</TreeView>
Crie uma TreeView
O TreeView controlo contém uma hierarquia de TreeViewItem controlos. Um TreeViewItem controle é um HeaderedItemsControl que tem um Header e uma coleção Items.
Se estiver a definir uma TreeView usando a Extensible Application Markup Language (XAML), pode definir explicitamente o Header conteúdo de um TreeViewItem controlo e os itens que compõem a sua coleção. A ilustração anterior demonstra este método.
Também pode especificar um ItemsSource como fonte de dados e depois especificar um HeaderTemplate e ItemTemplate para definir o TreeViewItem conteúdo.
Para definir a disposição de um TreeViewItem controlo, também podes usar HierarchicalDataTemplate objetos. Veja Usar SelectedValue, SelectedValuePath e SelectedItem para mais informações e um exemplo.
Se um item não for um TreeViewItem controlo, ele é automaticamente encerrado por um TreeViewItem controlo quando o TreeView controlo é exibido.
Expandir e recolher um TreeViewItem
Se o utilizador expandir um TreeViewItem, a IsExpanded propriedade é definida para true. Também pode expandir ou colapsar TreeViewItem sem qualquer ação direta do utilizador, definindo a propriedade IsExpanded para true (expandir) ou false (colapsar). Quando esta propriedade muda, ocorre um evento Expanded ou Collapsed.
Quando o BringIntoView método é chamado a um TreeViewItem controlo, os TreeViewItem e os seus controlos pais TreeViewItem expandem-se. Se a TreeViewItem não for visível ou parcialmente visível, os TreeView rolam para a tornar visível.
Selecione um TreeViewItem
Quando um utilizador clica num TreeViewItem controlo para o selecionar, o Selected evento ocorre e a sua IsSelected propriedade é definida para true. O TreeViewItem também se torna o SelectedItem do TreeView controlo. Por outro lado, quando a seleção muda de um TreeViewItem controlo, o seu Unselected evento ocorre e a sua IsSelected propriedade é definida para false.
A propriedade SelectedItem do controlo TreeView é uma propriedade de apenas leitura, por isso não podes defini-la explicitamente. A SelectedItem propriedade é definida se o utilizador clicar num TreeViewItem controlo ou quando a IsSelected propriedade estiver definida como true no TreeViewItem controlo.
Use a propriedade SelectedValuePath para especificar um SelectedValue de um SelectedItem. Para mais informações, consulte Use SelectedValue, SelectedValuePath e SelectedItem.
Pode registar um gestor de eventos no SelectedItemChanged evento para determinar quando um selecionado TreeViewItem muda. O RoutedPropertyChangedEventArgs<T> que é fornecido ao handler de eventos especifica o OldValue, que é a seleção anterior, e o NewValue, que é a seleção atual. Qualquer um dos valores pode ser null se a aplicação ou utilizador não tiver feito uma seleção anterior ou atual.
Estilizar uma TreeView
O estilo padrão de um TreeView controlo coloca-o dentro de um StackPanel objeto que contém um ScrollViewer controlo. Quando defines as propriedades Width e Height para um TreeView, estes valores são usados para dimensionar o objeto StackPanel que mostra o TreeView. Se o conteúdo a mostrar for maior do que a área de visualização, um ScrollViewer aparece automaticamente para que o utilizador possa percorrer o conteúdo do TreeView.
Para personalizar a aparência de um TreeViewItem controlo, defina a Style propriedade como um Style personalizado.
O exemplo seguinte mostra como definir os valores das propriedades Foreground e FontSize para um controlo TreeViewItem usando um Style.
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Foreground" Value="Blue"/>
<Setter Property="FontSize" Value="12"/>
</Style>
Adicionar imagens e outros conteúdos aos itens do TreeView
Pode incluir mais de um objeto no conteúdo Header de um TreeViewItem. Para incluir múltiplos objetos no Header conteúdo, inclua os objetos dentro de um controlo de layout, como um Panel ou StackPanel.
O exemplo seguinte mostra como definir o Header de um TreeViewItem como um CheckBox e um TextBlock, ambos encerrados num controlo DockPanel.
<TreeViewItem>
<TreeViewItem.Header>
<DockPanel>
<CheckBox/>
<TextBlock>
TreeViewItem Text
</TextBlock>
</DockPanel>
</TreeViewItem.Header>
</TreeViewItem>
O exemplo seguinte mostra como definir um DataTemplate que contém um Image e um TextBlock que estão encerrados num DockPanel controlo. Pode usar um DataTemplate para definir o HeaderTemplate ou ItemTemplate para um TreeViewItem.
<DataTemplate x:Key="NewspaperTVItem">
<DockPanel>
<Image Source="images\icon.jpg"/>
<TextBlock VerticalAlignment="center" Text ="{Binding Path=Name}"/>
</DockPanel>
</DataTemplate>
Tarefas comuns
A tabela seguinte lista tarefas comuns para trabalhar com o controlo TreeView:
| Title | Description |
|---|---|
| Criar Vistas de Árvore Simples ou Complexas | Aprende a criar controlos TreeView com diferentes estruturas. |
| Utilize SelectedValue, SelectedValuePath e SelectedItem | Aprenda a trabalhar com propriedades de seleção num TreeView. |
| Vincular uma TreeView a dados que tenham profundidade indeterminável | Aprenda a associar um TreeView a dados hierárquicos com profundidade desconhecida. |
| Melhorar o desempenho de uma TreeView | Aprenda a otimizar o desempenho do TreeView. |
| Encontre um TreeViewItem num TreeView | Aprenda a localizar um TreeViewItem específico dentro de um TreeView. |
Secções relacionadas
Visão geral da vinculação de dados
Visão Geral da Templação de Dados
Referência
Estilos e modelos
Podes modificar o padrão ControlTemplate para dar ao TreeView 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.
Partes
O TreeView controlo não tem partes nomeadas.
Quando cria um ControlTemplate para um TreeView, o seu modelo pode conter um ItemsPresenter dentro de um ScrollViewer. (O ItemsPresenter exibe cada item no TreeView; o ScrollViewer permite deslocar-se dentro do controlo). Se o ItemsPresenter não for filho direto do ScrollViewer, deve dar ao ItemsPresenter o nome ItemsPresenter.
Estados visuais
A tabela seguinte lista os estados visuais do TreeView controlo.
| Nome VisualState | Nome VisualStateGroup | Description |
|---|---|---|
| Válido | Estados de Validação | O controlo usa a Validation classe e a Validation.HasError propriedade associada é false. |
| FocadoInválido | Estados de Validação | A Validation.HasError propriedade anexa é true e o controlo tem foco. |
| InvalidUnfocused | Estados de Validação | A Validation.HasError propriedade anexada é true e o controlo não tem foco. |
Partes do TreeViewItem
A tabela seguinte lista as partes nomeadas para o TreeViewItem controlo.
| Parte | Tipo | Description |
|---|---|---|
| PART_Header | FrameworkElement | Um elemento visual que contém o conteúdo do cabeçalho do TreeView controlo. |
Estados do TreeViewItem
A tabela seguinte lista os estados visuais para TreeViewItem controlo.
| Nome VisualState | Nome VisualStateGroup | Description |
|---|---|---|
| Normal | Estados Comuns | O estado padrão. |
| MouseOver | Estados Comuns | O ponteiro do rato está posicionado sobre o TreeViewItem. |
| Disabled | Estados Comuns | O TreeViewItem está desativado. |
| Focused | FocusStates | O TreeViewItem tem foco. |
| Sem foco | FocusStates | O TreeViewItem não tem foco. |
| Expanded | Estados de Expansão | O controlo TreeViewItem encontra-se expandido. |
| Colapsado | Estados de Expansão | O TreeViewItem controlo colapsou. |
| HasItems | HasItemsStates | O TreeViewItem tem itens. |
| Sem Itens | HasItemsStates | O TreeViewItem não tem itens. |
| Selecionados | Estados de Seleção | O TreeViewItem é selecionado. |
| Selecionado Inativo | Estados de Seleção | O TreeViewItem é selecionado mas não ativo. |
| não selecionado | Estados de Seleção | O TreeViewItem não é selecionado. |
| Válido | Estados de Validação | O controlo usa a Validation classe e a Validation.HasError propriedade associada é false. |
| FocadoInválido | Estados de Validação | A Validation.HasError propriedade anexa indica se o controlo tem foco. |
| InvalidUnfocused | Estados de Validação | A Validation.HasError propriedade anexada é true se o controlo não tiver foco. |
Seções relacionadas
Visão geral da vinculação de dadosVisão geral da modelagem de templates de dados
.NET Desktop feedback