如何解决wpf treeview内存消耗?

时间:2014-12-16 15:48:31

标签: wpf memory treeview

我有一个应用程序,在树视图中加载所有xml标签用于显示?问题是我的xml包含数千个标签并吃了大量内存。我在网上看到这是wpf treeview的一个bug。有人帮帮我?

1 个答案:

答案 0 :(得分:2)

WPF TreeView控件已经提供了一种数据虚拟化形式,如How to: Improve the Performance of a TreeView中所述。这会解决显示已经存储在内存中的大量数据的问题。

基本上,您将VirtualizingStackPanel.IsVirtualizingVirtualizingStackPanel.VirtualizationMode附加属性添加到Treeview中。虚拟化堆栈面板仅创建和绑定屏幕上可见的项目:

<TreeView Height="200" 
        ItemsSource="{Binding Source={StaticResource dataItems}}"
        VirtualizingStackPanel.IsVirtualizing="True"
        VirtualizingStackPanel.VirtualizationMode="Recycling">

这并未解决您在内存中加载了数千条记录的情况。在这种情况下,它将导致问题的源数据,而不是TreeView本身。在这种情况下,真正的解决方案是通过使用适当的过滤器,首先加载这么多项目。另一种选择是在用户滚动太远时将数据加载到页面中。

另一个选择是在用户扩展父节点时加载子节点,尽管这会引入烦人的延迟。