WPF - Связанное дерево не обновляет корневые элементы

Я использую элемент управления WPF TreeView, который привязан к простой древовидной структуре на основе ObservableCollections. Вот XAML:


<TreeView Name="tree" Grid.Row="0"> 
    <TreeView.ItemTemplate> 
        <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}"> 
            <TextBlock Text="{Binding Path=Text}"/> 
        </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView>  

И древовидная структура:


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]; 
    } 
} 

Я установил ItemsSource этого дерева в качестве корня моей древовидной структуры, и его дочерние элементы становятся элементами корневого уровня в дереве (так, как я хочу):


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; 

Я могу добавить новых дочерних элементов в различные некорневые узлы моей древовидной структуры, и они появятся в TreeView именно там, где и должны.

root.Children[0].Children.Add(new Node("Cats", "Lions", "Tigers"));  

Но если я добавлю дочерний элемент в корневой узел:

root.Children.Add(new Node("Lizards", "Skinks", "Geckos")); 

Элемент не отображается, и ничего из того, что я пробовал (например, установил для ItemsSource значение null и затем снова), не вызвало его появление.

Если я добавлю ящериц перед настройкой ItemsSource, они появятся, но не тогда, когда я добавлю их позже.

Есть идеи?

Ответы на вопрос(2)

Ваш ответ на вопрос