Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Soms wilt u een TreeView binden aan een gegevensbron waarvan de diepte niet bekend is. Dit kan gebeuren wanneer de gegevens recursief zijn, zoals een bestandssysteem, waar mappen mappen kunnen bevatten of de organisatiestructuur van een bedrijf, waarbij werknemers andere werknemers als direct ondergeschikten hebben.
De gegevensbron moet een hiërarchisch objectmodel hebben. Een Employee-klasse kan bijvoorbeeld een verzameling werknemersobjecten bevatten die de directe ondergeschikten van een werknemer zijn. Als de gegevens worden weergegeven op een manier die niet hiërarchisch is, moet u een hiërarchische weergave van de gegevens maken.
Wanneer u de eigenschap ItemsControl.ItemTemplate instelt en als de ItemsControl voor elk onderliggend item een ItemsControl genereert, gebruikt de onderliggende ItemsControl dezelfde ItemTemplate als het bovenliggende item. Als u bijvoorbeeld de eigenschap ItemTemplate instelt op een gegevensgebonden TreeView, gebruikt elke TreeViewItem die wordt gegenereerd de DataTemplate die is toegewezen aan de eigenschap ItemTemplate van het TreeView.
Met de HierarchicalDataTemplate kunt u de ItemsSource voor een TreeViewItemof een HeaderedItemsControlopgeven in de gegevenssjabloon. Wanneer u de eigenschap HierarchicalDataTemplate.ItemsSource instelt, wordt die waarde gebruikt wanneer de HierarchicalDataTemplate wordt toegepast. Met behulp van een HierarchicalDataTemplatekunt u de ItemsSource recursief instellen voor elke TreeViewItem in de TreeView.
Voorbeeld
In het volgende voorbeeld ziet u hoe u een TreeView koppelt aan hiërarchische gegevens en een HierarchicalDataTemplate gebruikt om de ItemsSource voor elke TreeViewItemop te geven. De TreeView verbindt met XML-gegevens die de werknemers in een bedrijf vertegenwoordigen. Elk Employee element kan andere Employee elementen bevatten om aan te geven wie aan wie rapporteert. Omdat de gegevens recursief zijn, kan de HierarchicalDataTemplate op elk niveau worden toegepast.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<XmlDataProvider x:Key="myCompany" XPath="Company/Employee">
<x:XData>
<Company xmlns="">
<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>
Zie ook
- Overzicht van gegevensbindingen
- Overzicht van data-templating
.NET Desktop feedback