Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: Julio de 2008
Puede haber ocasiones en las que desee enlazar un elemento TreeView a un origen de datos cuya profundidad no se conoce. Esto puede ocurrir cuando los datos son de naturaleza recursiva, como en un sistema de archivos, donde las carpetas pueden contener carpetas, o la estructura organizativa de una compañía, donde los empleados dependen directamente de otros empleados.
El origen de datos debe tener un modelo de objetos jerárquico. Por ejemplo, una clase Employee puede contener una colección de objetos Employee que dependan directamente de un empleado. Si los datos se representan de forma no jerárquica, debe generar una representación jerárquica de los datos.
Si se establece la propiedad ItemsControl.ItemTemplate y ItemsControl genera un elemento ItemsControl para cada elemento secundario, el elemento ItemsControl secundario utiliza el mismo objeto ItemTemplate que el elemento primario. Por ejemplo, si establece la propiedad ItemTemplate en un elemento TreeView enlazado a datos, cada TreeViewItem que se genera utiliza el objeto DataTemplate asignado a la propiedad ItemTemplate de TreeView.
HierarchicalDataTemplate permite especificar la propiedad ItemsSource para TreeViewItem, o cualquier HeaderedItemsControl, en la plantilla de datos. Si se establece la propiedad HierarchicalDataTemplate.ItemsSource, ese valor se utiliza al aplicar HierarchicalDataTemplate. Mediante un elemento HierarchicalDataTemplate, puede establecer la propiedad ItemsSource de forma recursiva para cada TreeViewItem en TreeView.
Ejemplo
En el ejemplo siguiente se muestra cómo enlazar TreeView a datos jerárquicos y utilizar HierarchicalDataTemplate para especificar la propiedad ItemsSource para cada elemento TreeViewItem. TreeView enlaza a datos XML que representan a los empleados de una compañía. Cada elemento Employee puede contener otros elementos Employee para indicar las dependencias entre empleados. Dado que los datos son recursivos, el elemento HierarchicalDataTemplate puede aplicarse a cada nivel.
<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>
Vea también
Conceptos
Información general sobre el enlace de datos
Información general sobre plantillas de datos
Historial de cambios
Fecha |
Historial |
Motivo |
|---|---|---|
|
Julio de 2008 |
Se ha agregado un tema. |
Mejora de la información. |