我正在运行时创建一个TreeView。它有几个节点(TreeViewItem),每个节点都有一个名称。最初它是倒塌的。一个单独的comboBox显示所有TreeViewItem的名称。我必须根据所选的名称突出显示一个TreeViewItem。我使用一个递归函数并获得如下所示的TreeViewItem容器:
if (parent.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
continue;
TreeViewItem container = parent.ItemContainerGenerator.ContainerFromItem(child).As<TreeViewItem>();但它是
parent.ItemContainerGenerator.Status = GeneratorStatus.NotStarted
所有倒塌的物品。我如何手动为它们生成容器(而不展开它们)?
发布于 2010-04-22 07:52:26
每当你发现自己在视觉树上行走时,你就应该认真考虑建立一个视图模型。
视图模型可以增加树视图功能,而不必担心所面临的问题。
应用程序的视图模型将具有一些额外的属性。
IsSelected
IsExpanded
IsHighlighted以及你的
Data然后将(使用ItemContainerStyle) IsSelected、IsHighlighted和IsExpanded绑定到TreeViewItem,然后当您拥有这些视图模型的集合时,您可以对视图模型进行搜索,只需设置属性IsHighlighted。视图模型随后将响应,并且由于绑定到样式,如果需要,它将突出显示treeviewitem。它还可以做一些有趣的事情,比如扩展上面所有的节点。树视图将对此作出响应。
当与treeview相结合时,视图模型提供了更多的灵活性,并停止了那些视觉树爬行练习(这是一个黑客,感觉很脏)。
这是一个关于ViewModel和TreeView的好文章..。
https://stackoverflow.com/questions/2688865
复制相似问题