如何在标准WPF ListView中启用UI虚拟化
我正在使用.NET 4.5 / VS2012,我有一个ListView看起来像这样
- logs
但性能仍然没有改善。 我找到了一个使用ListBox的例子,但是如何虚拟化ListView? 我挣扎了很多。 我听说通过分组,在以前版本的WPF中关闭了虚拟化,但是使用.NET 4.5,WPF有一个IsVirtualizingWhenGrouping
属性,我已经将它设置为True
。
更新 :罪魁祸首是自定义样式,删除后,列表视图像黄油一样平稳运行
这篇文章对你有很大帮助。也可以看到..
“UI虚拟化仅在内存中存储可见项目, 但在数据绑定方案中将整个数据结构存储在内存中 。相比之下,数据虚拟化仅存储内存中屏幕上可见的数据项。”
“默认情况下,当ListView和ListBox控件的列表项绑定到数据时,会为其启用UI虚拟化。”
有关详细信息,请查看原始MSDN源。
我知道这是一个老问题,但我遇到它寻找我的问题的答案,并希望分享我发现的,以防它对其他人有用。 我有一个非虚拟化的ListView控件非常类似的情况。 我删除了它上面的自定义样式(阅读此线程和相关链接后),它开始正确虚拟化。
经过大量调查,与默认模板进行比较,并缩小范围,我发现它是该模板内ScrollContentPresenter上的’CanContentScroll’属性。 我根本没有设置它,当我将它设置为true时,它开始正确虚拟化。 我还注意到默认模板的’CanHorizontallyScroll =“False”’和’CanVerticallyScroll =“False”’; 那些似乎没有什么区别,我可以在我的有限测试中告诉我(我确信有人可以插入并说出他们做了什么)但是我还是把它们留了下来。
这是我的最终样式(请注意,这是从默认和修改开始的,所以不确定CanContentScroll属性被删除的位置……):
上述就是C#学习教程:如何在标准WPF ListView中启用UI虚拟化分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/999719.html