2011-12-20 58 views
6

有沒有簡單的方法來設置TreeView的SelectedItem爲null或等效?另外,我需要在C#中執行此操作,而不是在XAML中執行此操作。如果你想刪除的選擇從TreeView中刪除SelectedItem

treeView1.Items.Remove(treeView1.SelectedItem); 

最好的問候,

加布裏埃爾

+0

您究竟想要做什麼?爲什麼你需要null SelectedItem? – 2011-12-20 13:44:50

+0

我想他只是想清除選擇,也許依賴於另一個字段值,用戶必須重新選擇一個樹視圖節點,所以卡爾給出了答案 – 2011-12-20 13:48:54

回答

6

不知道你的意思

如果你想刪除的項目,利用這個從樹視圖使用此:

((TreeViewItem)treeView1.SelectedItem).IsSelected = false; 
+0

'SelectedItem'是一個'對象',所以你需要投它。 – Ray 2011-12-20 13:48:02

+0

哦,對不起,你必須把它轉換成TreeViewItem - editet – Karl 2011-12-20 13:48:47

+2

如果TreeView是數據綁定的,你會怎麼做? – 2011-12-20 13:58:06

3

你想取消選擇什麼選擇?

我想你想是這樣的:當你建立明確使用樹型視圖(S)TreeView的

((TreeViewItem)tv.SelectedItem).IsSelected = false; 
7

以前所有的答案將是有益的。如果您在使用ItemsSource時需要解決方案來清除選擇,請使用以下代碼:

private static TreeViewItem FindTreeViewSelectedItemContainer(ItemsControl root, object selection) 
{ 
    var item = root.ItemContainerGenerator.ContainerFromItem(selection) as TreeViewItem; 
    if (item == null) 
    { 
     foreach (var subItem in root.Items) 
     { 
      item = FindTreeViewSelectedItemContainer((TreeViewItem)root.ItemContainerGenerator.ContainerFromItem(subItem), selection); 
      if (item != null) 
      { 
       break; 
      } 
     } 
    } 

    return item; 
} 

// Example: 
private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    if (TV.SelectedItem != null) 
    { 
     var container = FindTreeViewSelectedItemContainer(TV, TV.SelectedItem); 
     if (container != null) 
     { 
      container.IsSelected = false; 
     } 
    } 
}