ツリービューからすべてのノードを展開する方法を知っています。
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
</Style>
</TreeView.ItemContainerStyle>
唯一の問題は、すべてのノードを拡張するのに約1分かかることです...これはおそらくアイテムが非常に多いためです。このプロセスをどのようにスピードアップできますか?
編集:
だから私はリストを持っています: 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つのアイテムしか含まれない可能性がありますが、フォルダに5つのアイテムがあり、それらの5つのアイテムの1つがたまたまそのフォルダである場合と同様に、それらのアイテムの1つにはおそらく20のアイテムのリストが含まれます。追加のアイテムを持つことができます。
したがって、TreeView.DataContext = MyFilesListを実行すると、ツリービューに1秒未満でデータが入力されます。しかし、私が含めるとき:
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
</Style>
</TreeView.ItemContainerStyle>
ツリービュー内のそのスタイルは、ツリービューのロードに時間がかかります。