WPF手动生成TreeViewItem容器
-
30-09-2019 - |
题
我正在运行时创建树景。它有几个节点(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的好文章...
不隶属于 StackOverflow