C# / WPF. I am trying to display my object model in a TreeView, with data bound using <HierarchicalDataTemplate>
. I am basing my method on this description.
I have created an object hierarchy for testing purposes. The code runs, but the tree view only displays the top-level item (in this case the house address). I have not been able to get it to display any sub nodes. I understand that the top-level object has to be an ObservableCollection so I create one for the purposes of the TreeView.
What am I doing wrong here?
public class House {
public string Address { get; set; } = "Baker Street";
public List<Dog> dog = new List<Dog>() { new Dog() };
}
public class Dog {
public string Name { get; set; } = "Rover";
public List<Claw> claw = new List<Claw>() { new Claw() };
public List<Whisker> whisker = new List<Whisker>() { new Whisker() };
public Tail tail = new Tail();
public Dog() { }
}
public class Claw {
public float length { get; set; } = 0;
public Claw() { }
}
public class Whisker {
public float length { get; set; } = 0;
public Whisker() { }
}
public class Tail
{
public float length { get; set; } = 0;
public Tail() { }
}
ObservableCollection<House> _house = new ObservableCollection<House>(){ new House() };
treeViewConfig2.ItemsSource = _house;
<StackPanel>
<StackPanel.Resources>
<DataTemplate x:Key="TailTemplate">
<TextBlock Text="{Binding Length}" Foreground="Green" />
</DataTemplate>
<HierarchicalDataTemplate x:Key="DogTemplate"
ItemsSource="{Binding Tail}"
ItemTemplate="{StaticResource TailTemplate}">
<TextBlock Text="{Binding Name}" Foreground="Red" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="HouseTemplate"
ItemsSource="{Binding Dog}"
ItemTemplate="{StaticResource DogTemplate}">
<TextBlock Text="{Binding Address}" />
</HierarchicalDataTemplate>
</StackPanel.Resources>
<TreeView Name ="treeViewConfig2" ItemsSource="{Binding}" ItemTemplate="{StaticResource HouseTemplate}"/>
</StackPanel>