WPVM TreeViewをMVVMにバインドして、多値データの大きな配列を表示するようにしました。このため、TreeNodeを展開すると、時間がかかり、多くのメモリが必要になります。WPFでTreeNodeを展開するときにTreeViewの深さを制限する
私が思うに、メモリ要件は、TreeViewがノードを最初の世代だけでなく、そのノードの下に偵察し、それらのノードにデータをロードさせることから来ていると思います。
この「スカウト」動作を第1世代の子ノードに限定する方法はありますか?
WPVM TreeViewをMVVMにバインドして、多値データの大きな配列を表示するようにしました。このため、TreeNodeを展開すると、時間がかかり、多くのメモリが必要になります。WPFでTreeNodeを展開するときにTreeViewの深さを制限する
私が思うに、メモリ要件は、TreeViewがノードを最初の世代だけでなく、そのノードの下に偵察し、それらのノードにデータをロードさせることから来ていると思います。
この「スカウト」動作を第1世代の子ノードに限定する方法はありますか?
WPFは、表示されているときのみTreeViewItemを生成します。つまり、Parentが展開されるまでアイテムが生成されません。だから、問題は「スカウト」ではないと私は思う。
とにかく、TwoWay Bindingを使用してTreeViewItem.IsExpandedに同期を追加することで、ViewModelに動的読み込みを実装しようとする場合があります。 thisを見てください。 IsExpandedプロパティには同じソリューションを使用できます。 TreeViewItemに展開可能であることを伝えるために偽の項目を追加することを忘れないでください。
TreeViewがVirtualizingStackPanelを使用しているかどうかを確認してください。 .NET 4.0ではデフォルトで使用されていますが、以前の.NETバージョンでは明示的に設定する必要があります。
詳細については、How to: Improve the Performance of a TreeViewを参照してください。