我知道如何从树视图中扩展所有节点:
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
</Style>
</TreeView.ItemContainerStyle>
唯一的问题是扩展所有节点需要大约一分钟......这可能是因为项目太多了。我怎么能加快这个过程呢?
编辑:
所以我有一个清单:List<ScanItems> MyFilesList
ScanItem
是一个具有以下属性的类:FullName,Name,Size,DateCreated,ComparePath以及我需要的其他特定属性,这就是我没有使用FileInfo类的原因。
ScanFile
是一个继承自ScanItems的类,所以它就像添加了其他自定义属性一样。
ScanDir
是另一个继承自ScanItem的类,它具有以下属性:
public List<ScanItem> items{get;set;}
我之所以包含该属性的原因是我可以拥有另一个包含项目的列表。
关于如何从文件列表填充树视图,请查看this question。
所以现在我希望我能正确解释自己如何将该列表绑定到树视图。
现在让我解释一下我是如何将文件添加到MyFilesList的。我创建了一个递归方法来查找目录中的文件。如果curent目录包含一个文件,则添加一个ScanFile项。如果它包含一个文件夹,则添加一个ScanDir对象并再次调用相同的方法传递ScanDir列表。因此,此过程大约需要8秒钟来扫描外部硬盘驱动器。在该方法执行后,我的列表可能只包含4个项目,但其中一个项目将包含可能包含20个项目的列表等等,就像文件夹可能有5个项目一样,如果这5个项目中的一个恰好是文件夹的文件夹可以有其他物品。
因此,当我执行TreeView.DataContext = MyFilesList时,树视图会在不到一秒的时间内填充。但是当我包括:
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
</Style>
</TreeView.ItemContainerStyle>
树视图中的样式树视图需要很长时间才能加载。
答案 0 :(得分:2)
您是否尝试过循环遍历treeviewitems并通过设置
“手动”展开它们IsExpanded = true;
如果这不起作用,那么尝试解决并添加到ScanDir
(我认为这是你扩展的唯一类?)属性IsExpanded
(或类似的)并绑定到它在你的模板中。不是最好的解决方案,但是如果它可行的话......
答案 1 :(得分:2)