Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在树视图中获取子位置?_C#_Wpf_Treeview_Parent Child - Fatal编程技术网

C# 如何在树视图中获取子位置?

C# 如何在树视图中获取子位置?,c#,wpf,treeview,parent-child,C#,Wpf,Treeview,Parent Child,我目前有一个简单的树视图,其中包含一个父节点和多个子节点。我想知道是否有办法在父树中找到所选节点的位置 我目前在treeview上有一个动作事件,当用户单击子对象时,它会打印出所选子对象的字符串值。我试过使用: int val = TreeView.SelectedItemProperty.GlobalIndex; 但它总是返回0。我在VB中看到了一些示例,但我似乎无法获得在C#中工作的相同想法。您必须使用Treeview的ItemContainerGenerator属性 请参阅:Conta

我目前有一个简单的树视图,其中包含一个父节点和多个子节点。我想知道是否有办法在父树中找到所选节点的位置

我目前在treeview上有一个动作事件,当用户单击子对象时,它会打印出所选子对象的字符串值。我试过使用:

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)?