Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
已展开所有WPF树视图项_Wpf_Treeview_C# 4.0 - Fatal编程技术网

已展开所有WPF树视图项

已展开所有WPF树视图项,wpf,treeview,c#-4.0,Wpf,Treeview,C# 4.0,我试图在我的树状视图中迭代,扩展所有节点,但它在运行时会遇到InvalidCastException 无法将“System.Data.DataRowView”类型的对象强制转换为“System.Windows.Controls.TreeView”类型 我的代码 foreach (TreeViewItem treeitem in thetreeView.Items) { treeitem.IsExpanded = true; } 有什么想法吗?我想从一个按钮启动它。只需添加此样式即可 &l

我试图在我的树状视图中迭代,扩展所有节点,但它在运行时会遇到InvalidCastException

无法将“System.Data.DataRowView”类型的对象强制转换为“System.Windows.Controls.TreeView”类型

我的代码

foreach (TreeViewItem treeitem in thetreeView.Items)
{
   treeitem.IsExpanded = true;
}
有什么想法吗?我想从一个按钮启动它。

只需添加此样式即可

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

对于代码,请通过此链接可能是这可以帮助你

有一个名为“TreeView Expand”的演示,它有一个带有“全部展开”和“全部折叠”按钮的树视图(还有更多)

我找到了一个“黑客”解决方案。 它与所建议的解决方案不同(由Kishore Kumar提出)

我添加了两个按钮——“全部折叠”和“全部展开”

代码隐藏:

    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));
                }
            }
        }
    }

我的解决方案基于

虽然我希望在运行时执行此操作,但树视图的初始状态应该是关闭的。我的想法是有一个折叠/扩展的所有按钮。为此,请阅读本文并给出示例。Bea的帖子涵盖了这个的基本原理。是的,我看过了。我有点困惑,试着从头开始写些东西。