Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Es kann vorkommen, dass Sie eine TreeView Bindung an eine Datenquelle durchführen möchten, deren Tiefe nicht bekannt ist. Dies kann auftreten, wenn die Daten in der Natur rekursiv sind, z. B. ein Dateisystem, in dem Ordner Ordner enthalten können, oder die Organisationsstruktur eines Unternehmens, bei denen Mitarbeiter andere Mitarbeiter als direkte Berichte haben.
Die Datenquelle muss über ein hierarchisches Objektmodell verfügen. Eine Klasse kann z. B. eine Sammlung von Employee-Objekten enthalten, Employee
die die direkten Berichte eines Mitarbeiters sind. Wenn die Daten auf eine Weise dargestellt werden, die nicht hierarchisch ist, müssen Sie eine hierarchische Darstellung der Daten erstellen.
Wenn Sie die ItemsControl.ItemTemplate-Eigenschaft festlegen und das ItemsControl-Element für jedes untergeordnete Element ein ItemsControl generiert, dann verwendet das Kind ItemsControl dasselbe ItemTemplate wie das Elternteil. Wenn Sie beispielsweise die ItemTemplate-Eigenschaft für eine datengebundene TreeView festlegen, verwendet jedes generierte TreeViewItem die DataTemplate-Eigenschaft, die der ItemTemplate-Eigenschaft des TreeView zugewiesen wurde.
Mit HierarchicalDataTemplate können Sie die ItemsSource für eine TreeViewItem oder beliebige HeaderedItemsControl auf der Datenvorlage angeben. Wenn Sie die HierarchicalDataTemplate.ItemsSource Eigenschaft festlegen, wird dieser Wert verwendet, wenn die HierarchicalDataTemplate Eigenschaft angewendet wird. Mit einem HierarchicalDataTemplate können Sie rekursiv die ItemsSource für jedes TreeViewItem in der TreeView setzen.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie Sie ein TreeView an hierarchische Daten binden und ein HierarchicalDataTemplate verwenden, um das ItemsSource für jedes TreeViewItem anzugeben.
TreeView bindet sich an XML-Daten, die die Mitarbeiter in einem Unternehmen darstellen. Jedes Employee
Element kann andere Employee
Elemente enthalten, um anzugeben, wer wem berichtet. Da die Daten rekursiv sind, kann dies HierarchicalDataTemplate auf jede Ebene angewendet werden.
<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>
Siehe auch
.NET Desktop feedback