我正在运行时创建树景。它有几个节点(TreeViewItem),每个节点都有一个名称。最初它崩溃了。单独的组合显示所有TreeViewItem的名称。我必须根据所选名称突出显示TreeViewItem。我正在使用递归函数,并获得这样的treeViewItem容器:

if (parent.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
                continue;

TreeViewItem container = parent.ItemContainerGenerator.ContainerFromItem(child).As<TreeViewItem>();

但它是

parent.itemcontainererator.status = generatorStatus.notStarted

对于所有崩溃的物品。我如何为它们生成容器(而不扩展它们)?

有帮助吗?

解决方案

每当您发现自己走视觉树时,您都应该认真考虑建立视图模型。

视图模型可以增加TreeViews功能,而不必担心您面临的问题。

应用程序的视图模型将具有几个额外的属性

IsSelected

IsExpanded

IsHighlighted

以及你的

Data

然后,您将绑定(使用ItemContainerStyle)声音,iShighlighted和expentemedemed and theeviewItem,然后当您拥有这些视图模型的集合时,您可以在视图模型上进行搜索,然后将属性设置为iShighlight。然后,视图模型将响应,并且由于对样式的绑定,因此如果您愿意,它将突出显示TreeViewItem。它也可能做时髦的事情,例如扩展上面的所有节点。树的视图将对此做出回应。

视图模型与Treeview结合使用,可以更灵活,并阻止那些视觉树爬行的练习(这是黑客,感到肮脏)

这里有一个 关于ViewModel和Treeview的好文章...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top