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

时间:2011-06-15 01:19:55

标签: c# wpf treeview parent-child

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

我目前在树视图上有一个动作事件,当用户点击子视频时,它会打印出所选孩子的字符串值。我尝试过使用:

int val = TreeView.SelectedItemProperty.GlobalIndex;

但它总是返回0.我在VB中看到了一些例子,但我似乎无法在C#中使用相同的想法。

3 个答案:

答案 0 :(得分:1)

您必须使用Treeview的ItemContainerGenerator属性。

http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainergenerator.aspx

请参阅:ContainerFromIndex和IndexFromContainer

请注意,每个TreeViewItem还有一个ItemContainerGenerator(它是一个ItemsControl),因此如果您有多个级别,则必须递归搜索树。

答案 1 :(得分:1)

我认为wpf中所有树视图问题(以及大多数ui问题)的答案是构建一个ViewModel。无论何时开始爬行可视化树以查找已绑定到的元素,您都会采取艰难的方式。一旦你开始使用ItemsContainerGenerator,你就必须开始担心你不应该遇到的很多问题。

您绑定到层次结构。如果该结构在每个项目上都有一个选定的item属性,并且它绑定到TreeViewItem选择的项目,那么您可以在代码中获取所选项目并从那里执行其他所有操作。看看类似的问题here

答案 2 :(得分:0)

所以我没有找到我正在寻找的答案(我可能会把我的问题与其他人混淆。通过说位置)。无论如何我解决了它是因为我得到了所选孩子的字符串值并将其与我的列表进行了比较。感谢那些回答的人!