Расширен все элементы WPF Treeview - PullRequest
3 голосов
/ 13 июля 2010

Я пытаюсь перебрать свой TreeView, расширяя все узлы, однако при запуске он вызывает InvalidCastException;

Невозможно привести объект типа 'System.Data.DataRowView' к типу System.Windows.Controls.TreeViewItem '.

Мой код;

foreach (TreeViewItem treeitem in thetreeView.Items)
{
   treeitem.IsExpanded = true;
}

Есть идеи?Я хочу запустить это с кнопки.

Ответы [ 3 ]

13 голосов
/ 13 июля 2010

просто добавьте этот стиль

<TreeView.ItemContainerStyle>
    <Style TargetType="TreeViewItem"> 
        <Setter Property="IsExpanded" Value="True" /> 
    </Style> 
</TreeView.ItemContainerStyle>

для кода перейдите по этой ссылке, может быть, это может помочь вам

http://bea.stollnitz.com/blog/?p=55

4 голосов
/ 07 августа 2013

Я нашел «хакское» решение для этого.Он не связан с наследованием, как предложенное решение здесь ( Кишоре Кумар )

Я добавил две кнопки - «Свернуть все» и «Развернуть все».

Код сзади:

    private void btnCollapseAll_Click(object sender, RoutedEventArgs e)
    {
        foreach (var item in treeView.Items)
        {
            DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item);
            CollapseTreeviewItems(((TreeViewItem)dObject));
        }
    }

    private void btnExpandAll_Click(object sender, RoutedEventArgs e)
    {
        foreach (var item in treeView.Items)
        {
            DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item);
            ((TreeViewItem)dObject).ExpandSubtree();
        }
    }

    private void CollapseTreeviewItems(TreeViewItem Item)
    {
        Item.IsExpanded = false;

        foreach (var item in Item.Items)
        {
            DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item);

            if (dObject != null)
            {
                ((TreeViewItem)dObject).IsExpanded = false;

                if (((TreeViewItem)dObject).HasItems)
                {
                    CollapseTreeviewItems(((TreeViewItem)dObject));
                }
            }
        }
    }

Мое решение основано на этом

0 голосов
/ 13 июля 2010

Мешок с хитростями имеет демонстрацию под названием «TreeView Expand», которая имеет древовидное представление с возможностью развернуть все и свернуть все кнопки (и некоторые другие)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...