4

我正在使用通过 MVVM 绑定到我的类的 WPF TreeView 来显示大量多级数据。因此,当我展开 TreeNode 时,需要一些时间和大量内存。

我认为,内存需求来自于 TreeView 侦察出的节点,而不仅仅是第一代的孩子,迫使这些节点加载数据。

有没有办法将这种“侦察”行为限制在第一代子节点?

4

2 回答 2

2

WPF 仅在显示 TreeViewItem(s) 时才生成它们,即在其父项展开之前不会生成任何项目。所以,我认为问题不在于“侦察”。

无论如何,您可以尝试通过使用 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 回答