2011-12-20 52 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; 
     } 
    } 
}