C# 如何在树视图中获取子位置?
我目前有一个简单的树视图,其中包含一个父节点和多个子节点。我想知道是否有办法在父树中找到所选节点的位置 我目前在treeview上有一个动作事件,当用户单击子对象时,它会打印出所选子对象的字符串值。我试过使用:C# 如何在树视图中获取子位置?,c#,wpf,treeview,parent-child,C#,Wpf,Treeview,Parent Child,我目前有一个简单的树视图,其中包含一个父节点和多个子节点。我想知道是否有办法在父树中找到所选节点的位置 我目前在treeview上有一个动作事件,当用户单击子对象时,它会打印出所选子对象的字符串值。我试过使用: int val = TreeView.SelectedItemProperty.GlobalIndex; 但它总是返回0。我在VB中看到了一些示例,但我似乎无法获得在C#中工作的相同想法。您必须使用Treeview的ItemContainerGenerator属性 请参阅:Conta
int val = TreeView.SelectedItemProperty.GlobalIndex;
但它总是返回0。我在VB中看到了一些示例,但我似乎无法获得在C#中工作的相同想法。您必须使用Treeview的ItemContainerGenerator属性 请参阅:ContainerFromIndex和IndexFromContainer
请注意,每个treeview项目也有一个ItemContainerGenerator(它是一个ItemsControl),因此如果有多个级别,则必须递归搜索树。我认为wpf中所有treeview问题(以及大多数ui问题)的答案是构建一个ViewModel。无论何时,只要您开始在可视化树中爬行以查找您已经绑定到的元素,您都在以艰难的方式进行操作。一旦你开始使用ItemsContainerGenerator,你就必须开始担心很多你不应该担心的问题
您正在绑定到一个层次结构。如果该结构在每个项上都有一个selected item属性,并且它绑定到TreeViewItem selected item,那么您只需在代码中获取所选项,然后从中执行其他所有操作。请看一个类似的问题。因此我没有找到我想要的答案(我可能会说“位置”,让别人对我的问题感到困惑)。无论如何,我是如何解决的,我得到了所选子项的字符串值,并将其与我的列表进行了比较。感谢那些回答的人 你在找笛卡尔坐标吗?或者像“祖父母\父母\孩子”这样的嵌套路径?我正在查找父节点中的顺序。如果我的树视图是这样的:>parent-child0-child1-child2-child3如果用户点击child2(假设计数器从0开始)一般考虑树视图,那么为什么需要有订单呢?这通常由您选择的演示面板(ContainerTemplate)决定。还有其他方法可以识别你的孩子吗?我有一个项目的向量,我用它来创建孩子。我想要孩子所在的位置,这样我就可以将它链接回向量,因为向量元素的值将与树中孩子所在的顺序号相同。如果我错了,请更正我,但你有向量的/entry/。为什么不做一个vector.IndexOf(tv.SelectedItem)?