我知道如何从树视图展开所有节点:
<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;}
我包含该属性的原因是我可以拥有另一个包含项目的列表。
查看有关如何从文件列表中填充树视图的问题。
所以现在我希望我正确地解释我如何将该列表绑定到树视图。
现在让我解释一下如何将文件添加到 MyFilesList。我创建了一个递归方法来查找目录中的文件。如果当前目录包含一个文件,则添加一个 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>
树视图中的那种样式树视图需要很长时间才能加载。