2015-08-28 3 views
0

Я хочу, чтобы получить корневой узел выбранного элемента в TreeView, например, если я:не может возвратить корневой узел 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 указывается в красный, с этой ошибкой:

Can not implicitly convert type System.Windows.Controls.TreeView in System.Windows.Controls.TreeViewItem

ответ

1

Вы назначаете 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; 
} 
+0

currentItem = currentItem.Parent; CurrentItem.Parent подчеркивается красным цветом, это ошибка: не удается неявно преобразовать тип System.Windows.DependencyObject в System.Windows.Controls.TreeViewItem – Bender

+0

@Bender отредактирован, попробуйте это. – Hristo

+0

Спасибо, у меня есть один вопрос: var country = FindRootNode (national_team.SelectedItem); верен? Потому что компилятор говорит мне аргумент недействительным. – Bender

Смежные вопросы