Удалить SelectedItem из TreeView - PullRequest
       3

Удалить SelectedItem из TreeView

6 голосов
/ 20 декабря 2011

Есть ли простой способ установить SelectedItem TreeView на ноль или эквивалент?Кроме того, мне нужно сделать это в C #, а не в XAML.

С уважением,

Габриэль

Ответы [ 3 ]

8 голосов
/ 20 декабря 2011

Все предыдущие ответы будут полезны при явном построении TreeView с использованием TreeViewItem.Если вам нужно решение для очистки выбора при использовании 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;
        }
    }
}
6 голосов
/ 20 декабря 2011

Не уверен, что вы имеете в виду

Если вы хотите удалить элемент, используйте это:

treeView1.Items.Remove(treeView1.SelectedItem);

Если вы хотите удалить выделение из древовидного списка, используйте это:

((TreeViewItem)treeView1.SelectedItem).IsSelected = false;
3 голосов
/ 20 декабря 2011

Вы хотите отменить выбор, который выбран?

Я думаю, вы хотите что-то вроде этого:

((TreeViewItem)tv.SelectedItem).IsSelected = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...