Gabriel
Gabriel

Reputation: 464

Remove SelectedItem from TreeView

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

Answers (4)

Gary
Gary

Reputation: 3324

Do you want to quickly remove all Items? If so, you can use

treeView1.Items.Clear();

Upvotes: 0

Marat Khasanov
Marat Khasanov

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

Ray
Ray

Reputation: 46595

You want to unselect what is selected?

I think you want something like this:

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

Upvotes: 3

abc
abc

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

Related Questions