WPF - związany widok drzewa nie aktualizuje elementów głównych
Korzystam z formantu TreeView WPF, który związałem z prostą strukturą drzewa opartą na ObservableCollections. Oto XAML:
<TreeView Name="tree" Grid.Row="0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Text}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
A struktura drzewa:
public class Node : IEnumerable {
private string text;
private ObservableCollection<Node> children;
public string Text { get { return text; } }
public ObservableCollection<Node> Children { get { return children; } }
public Node(string text, params string[] items){
this.text = text;
children = new ObservableCollection<Node>();
foreach (string item in items)
children.Add(new Node(item));
}
public IEnumerator GetEnumerator() {
for (int i = 0; i < children.Count; i++)
yield return children[i];
}
}
Ustawiłem ItemSource tego drzewa jako root mojej struktury drzewa, a dzieci tego typu stają się elementami drzewa na poziomie drzewa (tak jak chcę):
private Node root;
root = new Node("Animals");
for(int i=0;i<3;i++)
root.Children.Add(new Node("Mammals", "Dogs", "Bears"));
tree.ItemsSource = root;
Mogę dodawać nowe dzieci do różnych węzłów innych niż root mojej struktury drzewa i pojawiają się one w TreeView tam, gdzie powinny.
root.Children[0].Children.Add(new Node("Cats", "Lions", "Tigers"));
Ale jeśli dodam dziecko do węzła głównego:
root.Children.Add(new Node("Lizards", "Skinks", "Geckos"));
Element nie pojawia się i nic, czego próbowałem (takie jak ustawienie wartości ItemsSource na wartość null, a następnie ponownie) nie spowodowało jego pojawienia się.
Jeśli dodam jaszczurki przed ustawieniem ItemSource, pojawią się, ale nie jeśli dodam je później.
Jakieś pomysły?