4

MVVM を介してクラスにバインドされた WPF TreeView を使用して、マルチレベル データの大きな配列を表示しています。このため、TreeNode を展開すると、ある程度の時間と大量のメモリが必要になります。

メモリ要件は、最初の世代の子だけでなく、ツリービューがノードをスカウトして、それらのノードにデータをロードさせることから来ると思います。

この「偵察」動作を子ノードの第 1 世代のみに制限する方法はありますか?

4

2 に答える 2

2

WPF は、表示されている場合にのみ TreeViewItem を生成します。つまり、親が展開されるまでアイテムは生成されません。ですから、問題は「スカウト」ではないと思います。

とにかく、TwoWay Binding を使用して TreeViewItem.IsExpanded との同期を追加することにより、ViewModel に動的読み込みを実装することを試みることができます。これを見てください。IsExpanded プロパティにも同じソリューションを使用できます。拡張可能であることを TreeViewItem に伝えるために、疑似アイテムを追加することを忘れないでください。

于 2012-04-15T17:01:01.977 に答える
1

TreeViewがVirtualizingStackPanelを使用しているかどうかを確認します。.NET 4.0ではデフォルトで使用されていると思いますが、以前の.NETバージョンでは明示的に設定する必要があります。

詳細については、「方法:TreeViewのパフォーマンスを向上させる」を参照してください。

于 2012-04-15T17:46:06.353 に答える