如何在树视图中获取子对象的位置
本文关键字:对象 位置 获取 视图 | 更新日期: 2023-09-27 17:59:05
我目前有一个简单的树视图,其中包含一个带有多个子节点的父节点。我想知道是否有一种方法可以在父树中找到所选节点的位置。
我目前在树视图上有一个操作事件,当用户单击子项时,它会打印出所选子项的字符串值。我尝试过使用:
int val = TreeView.SelectedItemProperty.GlobalIndex;
但它总是返回0。我在VB中看到了一些例子,但我似乎无法在C#中获得同样的想法。
您必须使用Treeview的ItemContainerGenerator属性。
http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainergenerator.aspx
请参阅:ContainerFromIndex和IndexFromContainer
请注意,每个TreeViewItem也有一个ItemContainerGenerator(它是一个ItemsControl),因此如果您有多个级别,则必须递归地向下搜索树。
我认为wpf中所有树视图问题(以及大多数ui问题)的答案都是构建一个ViewModel。每当你开始在视觉树上爬行以寻找已经绑定到的元素时,你都是在艰难地做事。一旦你开始使用ItemsContainerGenerator,你就必须开始担心很多你不应该担心的问题。
您正在绑定到一个层次结构。如果该结构在每个项上都有一个selected项属性,并且它绑定到TreeViewItem所选项,那么您可以在代码中获取所选项并从中执行其他所有操作。看看这里类似的问题。
所以我没有找到我想要的答案(我可能会说位置,让其他人对我的问题感到困惑)。不管怎样,我得到了所选子项的字符串值,并将其与我的列表进行了比较。感谢那些回答的人!