Como: BIND a um TreeView aos dados com uma profundidade Indeterminable
Pode haver vezes que você deseja BIND um TreeView a fonte de dados cuja profundidade é desconhecida. Isso pode ocorrer quando sistema autônomo dados são recursivas por natureza, sistema autônomo um sistema de arquivos, onde sistema autônomo pastas podem conter pastas, ou estrutura organizacional da empresa, onde sistema autônomo funcionários têm outros funcionários sistema autônomo relatórios diretos.
A fonte de dados deve ter um modelo de objeto hierárquicos. Por exemplo, um Employee classe pode conter uma coleção de objetos de funcionários que são os relatórios diretos de um funcionário. Se os dados são representados de forma que não é hierárquica, você deve criar uma representação hierárquica dos dados.
Ao conjunto o ItemsControl.ItemTemplate propriedade e, se a ItemsControl gera um ItemsControl para cada item filho e, em seguida, o filho ItemsControl usa o mesmo ItemTemplate sistema autônomo pai. Por exemplo, se você conjunto o ItemTemplate propriedade em uma ligação de dados TreeView, cada TreeViewItem ou seja gerada usa o DataTemplate que foi designado para o ItemTemplate propriedade das TreeView.
The HierarchicalDataTemplate permite que você especifique a ItemsSource para um TreeViewItem, ou qualquer HeaderedItemsControl, no modelo de dados. Ao conjunto o HierarchicalDataTemplate.ItemsSource propriedade, esse valor é usado quando o HierarchicalDataTemplate é aplicada. Usando um HierarchicalDataTemplate, você pode conjunto recursivamente a ItemsSource para cada TreeViewItem no TreeView.
Exemplo
O exemplo a seguir demonstra como BIND um TreeView a dados hierárquicos e utilizar um HierarchicalDataTemplate Para especificar o ItemsSource para cada TreeViewItem. The TreeView vincula a dados XML que representa os funcionários da empresa. Cada Employee elemento pode conter outros Employee elementos para indicar que relata para quem. Como os dados são recursivas, a HierarchicalDataTemplate pode ser aplicado a cada nível.
<Page
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<XmlDataProvider x:Key="myCompany" XPath="Company/Employee">
<x:XData>
<Company >
<Employee Name="Don Hall">
<Employee Name="Alice Ciccu">
<Employee Name="David Pelton">
<Employee Name="Vivian Atlas"/>
</Employee>
<Employee Name="Jeff Price"/>
<Employee Name="Andy Jacobs"/>
</Employee>
<Employee Name="Bill Malone">
<Employee Name="Maurice Taylor"/>
<Employee Name="Sunil Uppal"/>
<Employee Name="Qiang Wang"/>
</Employee>
</Employee>
</Company>
</x:XData>
</XmlDataProvider>
<!-- Bind the HierarchicalDataTemplate.ItemsSource property to the employees under
each Employee element. -->
<HierarchicalDataTemplate x:Key="EmployeeTemplate"
ItemsSource="{Binding XPath=Employee}">
<TextBlock Text="{Binding XPath=@Name}" ></TextBlock>
</HierarchicalDataTemplate>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="True"/>
</Style>
</Page.Resources>
<Grid>
<TreeView ItemsSource="{Binding Source={StaticResource myCompany}}"
ItemTemplate="{StaticResource EmployeeTemplate}"/>
</Grid>
</Page>
Consulte também
Conceitos
Revisão de Associação de Dados
Visão geral sobre Templating de dados
Date |
History |
Motivo |
---|---|---|
Julho de 2008 |
Tópico adicional. |
Aprimoramento de informações. |