WPF TreeView:ExpandAll()方法在哪里

38 wpf treeview

如何在WPF中展开所有TreeView节点?在WinForms中有一个ExpandAll()方法来执行此操作.

Pra*_*gam 76

这可能有所帮助

<TreeView>
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsExpanded" Value="True" />
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

  • 好的,但这个解决方案是在加载时而不是按需. (5认同)
  • 简单有效!谢谢! (3认同)

Pie*_*non 17

使用XAML Treeview样式,您必须具有类似上面所写的属性设置器:

在Cs文件中,写这样的方法,在我的示例中我使用了一个按钮,我的treeview的名字是myTV:

private void ExpandAll(ItemsControl items, bool expand)
    {
        foreach (object obj in items.Items)
        {
            ItemsControl childControl = items.ItemContainerGenerator.ContainerFromItem(obj) as ItemsControl;
            if (childControl != null)
            {
                ExpandAll(childControl, expand);
            }
            TreeViewItem item = childControl as TreeViewItem;
            if (item != null)
                item.IsExpanded = true;
        }
    }


    private void btnExpandAll_Click(object sender, RoutedEventArgs e)
    {

        foreach (object item in this.myTV.Items)
        {
            TreeViewItem treeItem = this.myTV.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
            if (treeItem != null)
                ExpandAll(treeItem, true);
            treeItem.IsExpanded = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助你.


CSh*_*per 13

WPF TreeView类没有ExpandAll方法.因此,您必须遍历节点并将其IsExpanded属性设置为true.


小智 6

尝试这个

private void btnExpandAll_Click(object sender, RoutedEventArgs e)
{
    foreach(var item in tvES.Items)
    {
        var tvi = item as TreeViewItem;
        if (tvi != null)
            tvi.ExpandSubtree();
    }
}
Run Code Online (Sandbox Code Playgroud)