Shiju Samuel
Shiju Samuel

Reputation: 1591

WPF HierarchicalDataTemplate & Treeview

I am trying to bind a recursive Collection to a Treeview in WPF. I am only able to see the first level in the UI

public class Employee
{
    public string Name { get; set; }
    public List<Employee> Reportees { get; set; }
}

Employees = new ObservableCollection<Employee>
{
 new Employee { Name = "Bob1", Reportees=new List<Employee>{ new Employee { Name = "Bob1's Sub1"}, new Employee { Name = "Bob1's Sub2"} } },
 new Employee { Name = "Bob2", Reportees=new List<Employee>{ new Employee { Name = "Bob2's Sub1"}, new Employee { Name = "Bob2's Sub2"} } },
 new Employee { Name = "Bob3", Reportees=new List<Employee>{ new Employee { Name = "Bob3's Sub1"}, new Employee { Name = "Bob3's Sub2"} } }
};

XAML

<TreeView HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top" Height="320" Width="300" ItemsSource="{Binding Employees}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type model:Employee}">
            <TextBlock Text="{Binding Name}" />
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type System:String}">
            <TextBlock Text="{Binding}" />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

Upvotes: 0

Views: 51

Answers (1)

themightylc
themightylc

Reputation: 324

Your HierarchicalDataTemplate is missing it's ItemsSource

something like this:

<TreeView HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top" Height="320" Width="300" ItemsSource="{Binding Employees}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type model:Employee}" ItemsSource="{Binding Reportees}">
            <TextBlock Text="{Binding Name}" />
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type System:String}" ItemsSource="{Binding Reportees}">
            <TextBlock Text="{Binding}" />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

Upvotes: 1

Related Questions