I am trying to bind some data from a class instance to a TreeView. My code is as follows:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Parent myClass = new Parent(); this.DataContext = myClass; } } public class Parent { private List<string> children = new List<string>; public string Name {get;set;} public List<string> Children { get { return this.children; } set { this.children=value; } } public Parent() { this.Name = "Test"; for (int i = 1; i <= 10; i++) { Children.Add(i.ToString()); } } } And the XAML:
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:loc="clr-namespace:WpfApplication1" Title="MainWindow" Height="287" Width="525"> <StackPanel Orientation="Horizontal" VerticalAlignment="Stretch"> <TreeView Name="TreeView" ItemsSource="{Binding}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}"/> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> </StackPanel> </Window> Nothing shows up in my TreeView. What am I doing wrong?
I expect to see:
-Test
-- 1
-- 2
-- 3
etc
updated: to make Name and Children properties instead of public fields.
updated: added what I expect to see in TreeView