如何解决 wpf 树视图内存消耗



>我有一个应用程序,可以在树视图中加载所有 xml 标记以进行显示?问题是我的xml包含数千个标签并占用大量内存。我在互联网上读到这是 wpf 树视图的错误。有人可以帮助我吗?

WPF 树视图控件提供一种形式的数据虚拟化,如如何:提高树视图的性能中所述。这解决了显示内存中已保存的大量数据的问题。

实质上,您将 VirtualizingStackPanel.IsVirtualizing 和 VirtualizingStackPanel.VirtualizationMode 附加属性添加到树视图中。虚拟化堆栈面板仅创建和绑定屏幕上可见的项目:

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

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

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

最新更新