快速展开wpf中的TreeViewItems

快速展开wpf中的TreeViewItems,wpf,performance,treeview,treeviewitem,Wpf,Performance,Treeview,Treeviewitem,我知道如何从树视图展开所有节点: <TreeView.ItemContainerStyle> <Style TargetType="TreeViewItem"> <Setter Property="TreeViewItem.IsExpanded" Value="True"/> </Style> </TreeView.ItemContainerStyle>

我知道如何从树视图展开所有节点:

<TreeView.ItemContainerStyle>
            <Style TargetType="TreeViewItem">
                <Setter Property="TreeViewItem.IsExpanded" Value="True"/>
            </Style>
 </TreeView.ItemContainerStyle>
我之所以包含该属性,是因为我可以有另一个包含项目的列表

了解如何从文件列表填充树视图

所以现在我希望我能正确地解释我是如何将列表绑定到treeview的

现在让我解释一下我是如何将这些文件添加到MyFileList的。我创建了一个递归方法来查找目录中的文件。如果当前目录包含文件,则添加扫描文件项。如果它包含一个文件夹,那么添加一个ScanDir对象,并再次调用相同的方法传递ScanDir列表。所以这个过程大约需要8秒钟来扫描我的外部硬盘。执行该方法后,我的列表可能只包含4个项目,但其中一个项目可能包含20个项目,以此类推,就像文件夹可能包含5个项目一样,如果这5个项目中的一个恰好是文件夹,则该文件夹可以包含其他项目

因此,当我执行TreeView.DataContext=MyFilesList时,TreeView将在不到一秒钟的时间内填充。但当我包括:

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


树视图中的样式树视图需要很长时间才能加载

您是否尝试过在treeviewitems中循环,并通过设置

IsExpanded = true;

如果这不起作用,那么尝试一种变通方法,并将属性
扩展到模板中的
ScanDir
(我想这是您扩展的唯一类?)并绑定到它。虽然不是最好的解决方案,但如果可行的话…

您是否尝试过在treeviewitems中循环并通过设置“手动”扩展它们

IsExpanded = true;

如果这不起作用,那么尝试一种变通方法,并将属性
扩展到模板中的
ScanDir
(我想这是您扩展的唯一类?)并绑定到它。不是最好的解决方案,但如果可行…

看看about treeviews and performance的帖子。
相关员额将是:

  • 如何在树视图中展开项目?//
  • 有什么技巧可以帮助我提高TreeView的性能吗?//

她很好地详细解释了你可以尝试的所有选项。内容太多,无法全部放在这里。

请看一下关于TreeView和performance的帖子。
相关员额将是:

  • 如何在树视图中展开项目?//
  • 有什么技巧可以帮助我提高TreeView的性能吗?//

她很好地详细解释了你可以尝试的所有选项。内容太多,无法全部放在这里。

我们谈论的是多少?如果您使用Linq显示数据库中的数据,那么可以看看您的Linq在做什么-可能您分别针对每个记录访问数据库。列表绑定到树视图。treeview由大约60000个项目组成。当我从项目中排除样式时,加载它不需要时间。这是一个很大的问题,但是如何从数据库中检索项目呢?代码会很好。如果您将linq与导航属性“Child”(或类似属性)一起使用,那么当您扩展节点时,很可能是为了它而访问数据库。。。大约6万次谢谢你的帮助你是对的我不清楚我是如何填写我的名单的。看看我的编辑。我现在正在做…我们在谈论多少?如果您使用Linq显示数据库中的数据,那么可以看看您的Linq在做什么-可能您分别针对每个记录访问数据库。列表绑定到树视图。treeview由大约60000个项目组成。当我从项目中排除样式时,加载它不需要时间。这是一个很大的问题,但是如何从数据库中检索项目呢?代码会很好。如果您将linq与导航属性“Child”(或类似属性)一起使用,那么当您扩展节点时,很可能是为了它而访问数据库。。。大约6万次谢谢你的帮助你是对的我不清楚我是如何填写我的名单的。看看我的编辑。我现在正在做…/所有这些链接现在都已断开:(@AriRoth如果您(或其他人)需要此信息,我已更正接受答案中的链接。//所有这些链接现在都已失效。:(@AriRoth如果您(或其他人)需要此信息,我已更正接受答案中的链接。