Reputation: 464
Is there a simple way to set a TreeView's SelectedItem to null or equivalent? Also, I need to do this in C# and not in XAML.
Best regards,
Gabriel
Upvotes: 7
Views: 15492
Reputation: 3324
Do you want to quickly remove all Items? If so, you can use
treeView1.Items.Clear();
Upvotes: 0
Reputation: 3848
All previous answers will be helpful when you build the TreeView explicitly using TreeViewItem(s). If you need a solution to clear selection when using ItemsSource, use the following code:
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;
}
}
}
Upvotes: 9
Reputation: 46595
You want to unselect what is selected?
I think you want something like this:
((TreeViewItem)tv.SelectedItem).IsSelected = false;
Upvotes: 3
Reputation: 2437
Not sure what you mean
If you want to remove the item, use this:
treeView1.Items.Remove(treeView1.SelectedItem);
If you want to remove the selection from the treeview, use this:
((TreeViewItem)treeView1.SelectedItem).IsSelected = false;
Upvotes: 8