Reputation: 1591
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
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