首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手动生成TreeViewItem容器

手动生成TreeViewItem容器
EN

Stack Overflow用户
提问于 2010-04-22 07:13:16
回答 1查看 3.4K关注 0票数 2

我正在运行时创建一个TreeView。它有几个节点(TreeViewItem),每个节点都有一个名称。最初它是倒塌的。一个单独的comboBox显示所有TreeViewItem的名称。我必须根据所选的名称突出显示一个TreeViewItem。我使用一个递归函数并获得如下所示的TreeViewItem容器:

代码语言:javascript
复制
if (parent.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
                continue;

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

但它是

parent.ItemContainerGenerator.Status = GeneratorStatus.NotStarted

所有倒塌的物品。我如何手动为它们生成容器(而不展开它们)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-22 07:52:26

每当你发现自己在视觉树上行走时,你就应该认真考虑建立一个视图模型。

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

应用程序的视图模型将具有一些额外的属性。

代码语言:javascript
复制
IsSelected

IsExpanded

IsHighlighted

以及你的

代码语言:javascript
复制
Data

然后将(使用ItemContainerStyle) IsSelected、IsHighlighted和IsExpanded绑定到TreeViewItem,然后当您拥有这些视图模型的集合时,您可以对视图模型进行搜索,只需设置属性IsHighlighted。视图模型随后将响应,并且由于绑定到样式,如果需要,它将突出显示treeviewitem。它还可以做一些有趣的事情,比如扩展上面所有的节点。树视图将对此作出响应。

当与treeview相结合时,视图模型提供了更多的灵活性,并停止了那些视觉树爬行练习(这是一个黑客,感觉很脏)。

这是一个关于ViewModel和TreeView的好文章..。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2688865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档