MVVM を介してクラスにバインドされた WPF TreeView を使用して、マルチレベル データの大きな配列を表示しています。このため、TreeNode を展開すると、ある程度の時間と大量のメモリが必要になります。
メモリ要件は、最初の世代の子だけでなく、ツリービューがノードをスカウトして、それらのノードにデータをロードさせることから来ると思います。
この「偵察」動作を子ノードの第 1 世代のみに制限する方法はありますか?
WPF は、表示されている場合にのみ TreeViewItem を生成します。つまり、親が展開されるまでアイテムは生成されません。ですから、問題は「スカウト」ではないと思います。
とにかく、TwoWay Binding を使用して TreeViewItem.IsExpanded との同期を追加することにより、ViewModel に動的読み込みを実装することを試みることができます。これを見てください。IsExpanded プロパティにも同じソリューションを使用できます。拡張可能であることを TreeViewItem に伝えるために、疑似アイテムを追加することを忘れないでください。
TreeViewがVirtualizingStackPanelを使用しているかどうかを確認します。.NET 4.0ではデフォルトで使用されていると思いますが、以前の.NETバージョンでは明示的に設定する必要があります。
詳細については、「方法:TreeViewのパフォーマンスを向上させる」を参照してください。