HierarchicalDataTemplate Class
Represents a DataTemplate that supports HeaderedItemsControl, such as TreeViewItem or MenuItem.
System.Windows.Threading.DispatcherObject
System.Windows.FrameworkTemplate
System.Windows.DataTemplate
System.Windows.HierarchicalDataTemplate
Namespace: System.Windows
Assembly: PresentationFramework (in PresentationFramework.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
The HierarchicalDataTemplate type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | HierarchicalDataTemplate() | Initializes a new instance of the HierarchicalDataTemplate class. |
![]() | HierarchicalDataTemplate(Object) | Initializes a new instance of the HierarchicalDataTemplate class with the specified type for which the template is intended. |
| Name | Description | |
|---|---|---|
![]() | AlternationCount | Gets or sets the number of alternating item containers for the child items. |
![]() | DataTemplateKey | Gets the default key of the DataTemplate. (Inherited from DataTemplate.) |
![]() | DataType | Gets or sets the type for which this DataTemplate is intended. (Inherited from DataTemplate.) |
![]() | Dispatcher | Gets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.) |
![]() | HasContent | Gets a value that indicates whether this template has optimized content. (Inherited from FrameworkTemplate.) |
![]() | IsSealed | Gets a value that indicates whether this object is in an immutable state so it cannot be changed. (Inherited from FrameworkTemplate.) |
![]() | ItemBindingGroup | Gets or sets the BindingGroup that is copied to each child item. |
![]() | ItemContainerStyle | Gets or sets the Style that is applied to the item container for each child item. |
![]() | ItemContainerStyleSelector | Gets or sets custom style-selection logic for a style that can be applied to each item container. |
![]() | ItemsSource | Gets or sets the binding for this data template, which indicates where to find the collection that represents the next level in the data hierarchy. |
![]() | ItemStringFormat | Gets or sets a composite string that specifies how to format the items in the next level in the data hierarchy if they are displayed as strings. |
![]() | ItemTemplate | Gets or sets the DataTemplate to apply to the ItemTemplate property on a generated HeaderedItemsControl (such as a MenuItem or a TreeViewItem), to indicate how to display items from the next level in the data hierarchy. |
![]() | ItemTemplateSelector | Gets or sets the DataTemplateSelector to apply to the ItemTemplateSelector property on a generated HeaderedItemsControl (such as a MenuItem or a TreeViewItem), to indicate how to select a template to display items from the next level in the data hierarchy. |
![]() | Resources | Gets or sets the collection of resources that can be used within the scope of this template. (Inherited from FrameworkTemplate.) |
![]() | Template | Gets or sets a reference to the object that records or plays the XAML nodes for the template when the template is defined or applied by a writer. (Inherited from FrameworkTemplate.) |
![]() | Triggers | Gets a collection of triggers that apply property values or perform actions based on one or more conditions. (Inherited from DataTemplate.) |
![]() | VisualTree | Gets or sets the root node of the template. (Inherited from FrameworkTemplate.) |
| Name | Description | |
|---|---|---|
![]() | CheckAccess | Determines whether the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.) |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() | FindName | Finds the element associated with the specified name defined within this template. (Inherited from FrameworkTemplate.) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | LoadContent | Loads the content of the template as an instance of an object and returns the root element of the content. (Inherited from FrameworkTemplate.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | RegisterName | Registers a new name/object pair into the current name scope. (Inherited from FrameworkTemplate.) |
![]() | Seal | Locks the template so it cannot be changed. (Inherited from FrameworkTemplate.) |
![]() | ShouldSerializeResources | Returns a value that indicates whether serialization processes should serialize the value of the Resources property on instances of this class. (Inherited from FrameworkTemplate.) |
![]() | ShouldSerializeVisualTree | Returns a value that indicates whether serialization processes should serialize the value of the VisualTree property on instances of this class. (Inherited from FrameworkTemplate.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() | UnregisterName | Removes a name/object mapping from the XAML namescope. (Inherited from FrameworkTemplate.) |
![]() | ValidateTemplatedParent | Checks the templated parent against a set of rules. (Inherited from DataTemplate.) |
![]() | VerifyAccess | Enforces that the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.) |
| Name | Description | |
|---|---|---|
![]() ![]() | INameScope.FindName | Infrastructure. Returns an object that has the provided identifying name. (Inherited from FrameworkTemplate.) |
![]() ![]() | IQueryAmbient.IsAmbientPropertyAvailable | Queries whether a specified ambient property is available in the current scope. (Inherited from FrameworkTemplate.) |
In the following example, ListLeagueList is a list of League objects. Each League object has a Name and a collection of Division objects. Each Division has a Name and a collection of Team objects, and each Team object has a Name.
<Window x:Class="SDKSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="HierarchicalDataTemplate Sample" xmlns:src="clr-namespace:SDKSample"> <DockPanel> <DockPanel.Resources> <src:ListLeagueList x:Key="MyList"/> <HierarchicalDataTemplate DataType = "{x:Type src:League}" ItemsSource = "{Binding Path=Divisions}"> <TextBlock Text="{Binding Path=Name}"/> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType = "{x:Type src:Division}" ItemsSource = "{Binding Path=Teams}"> <TextBlock Text="{Binding Path=Name}"/> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type src:Team}"> <TextBlock Text="{Binding Path=Name}"/> </DataTemplate> </DockPanel.Resources> <Menu Name="menu1" DockPanel.Dock="Top" Margin="10,10,10,10"> <MenuItem Header="My Soccer Leagues" ItemsSource="{Binding Source={StaticResource MyList}}" /> </Menu> <TreeView> <TreeViewItem ItemsSource="{Binding Source={StaticResource MyList}}" Header="My Soccer Leagues" /> </TreeView> </DockPanel> </Window>
The example shows that with the use of HierarchicalDataTemplate, you can easily display list data that contains other lists. The following is a screenshot of the example.

More Code
| How to: Create Simple or Complex TreeViews | This example shows how to create simple or complex TreeView controls. |
| How to: Use SelectedValue, SelectedValuePath, and SelectedItem | This example shows how to use the SelectedValue and SelectedValuePath properties to specify a value for the SelectedItem of a TreeView. |
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
