我正在使用WPF TreeView控件,我已经绑定到基于ObservableCollections的简单树结构。这里的XAML:WPF - 绑定treeview不更新根项目
<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之前添加蜥蜴,它们会显示出来,但如果我之后添加它们,则不会显示。
任何想法?
您使用的是什么observableCollection,这一个http://msdn.microsoft.com/en-us/library/ms668604.aspx?在上面的代码中看起来像一个非泛型版本,你是否推出了自己的? –
这是我的坏 - 由于尖括号没有显示类型参数。是的,我正在使用标准的通用ObservableCollection。 –
你有没有找到解决这个问题的办法?我有完全相同的问题,并希望您可以提供任何指导。谢谢。 –