不能返回TreeView的根节点
本文关键字:根节点 TreeView 返回 不能 | 更新日期: 2023-09-27 18:10:09
我想在TreeView中获得所选项目的根节点,例如,如果我有:
Italy
Serie A
和用户选择Serie A
,在代码中被返回意大利父根。我在一个方法中创建了这个变量:
var country = FindRootNode(nation_team.SelectedItem);
,这是方法:
private TreeViewItem FindRootNode(TreeView treeNode)
{
while (treeNode.Parent != null)
{
treeNode = (TreeView)treeNode.Parent;
}
return treeNode;
}
但我不确定这个代码是否正确,无论如何,return treeNode
用红色下划线,有这个错误:
不能隐式转换System.Windows.Controls.TreeView
您正在将treeNode
(TreeView
对象)分配给TreeViewItem
对象。
用这行:
treeNode = (TreeView)treeNode.Parent;
在使用它之前,请确保将SelectedItem转换为TreeViewItem,像这样:
FindRootNode(nation_team.SelectedItem as TreeViewItem)
你正在寻找的是这种递归方法:
private TreeViewItem FindRootNode(TreeViewItem currentItem){
if(currentItem == null) return null;
var tvi = (TreeViewItem)currentItem.Parent;
if(tvi == null){
return currentItem;
}
else{
return FindRootNode(tvi);
}
}
或者这个迭代的
private TreeViewItem FindRootNode(TreeViewItem currentItem){
if(currentItem == null) return null;
while(currentItem.Parent as TreeViewItem!= null){
currentItem = currentItem.Parent as TreeViewItem;
}
return currentItem;
}