2015-08-28 68 views
0

的根節點,例如,如果我:不能回到我想在樹視圖中選擇項目的根節點樹視圖

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對象。

這一行:

FindRootNode(nation_team.SelectedItem as TreeViewItem) 

你所尋找的是這樣的遞歸方法:

treeNode = (TreeView)treeNode.Parent; 

使用它確保您鑄造的SelectedItem到樹型視圖像這樣前

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.Controls.TreeViewItem中隱式轉換類型System.Windows.DependencyObject – Bender

+0

@Bender編輯過,試試看。 – Hristo

+0

謝謝,我有一個問題:var country = FindRootNode(nation_team.SelectedItem); 是正確的?因爲編譯器告訴我參數無效。 – Bender