【发布时间】:2012-06-26 14:14:16
【问题描述】:
我有一个ListView,它可能包含很多物品,所以它是virtualized 和回收物品。它不使用排序。我需要刷新一些值显示,但是当项目太多时,更新所有内容太慢,所以我想只刷新可见项目。
如何获得所有当前显示项目的列表?我试图查看ListView 或ScrollViewer,但我仍然不知道如何实现这一点。解决方案不能遍历所有项目来测试它们是否可以看到,因为这太慢了。
我不确定代码或 xaml 是否有用,它只是一个 Virtualized/Recycling ListView,其 ItemSource 绑定到 Array。
编辑:
答案:
感谢 akjoshi,我找到了方法:
获取
ListView的ScrollViewer(使用FindDescendant方法,您可以自己使用VisualTreeHelper)。读取它的
ScrollViewer.VerticalOffset:它是显示的第一个项目的编号- 阅读它的
ScrollViewer.ViewportHeight:它是显示的项目数。
Rq :CanContentScroll必须为真。
【问题讨论】:
-
你是如何填写你的 ListView 的?显式创建 ListViewItem?一组 ItemSource ?捆绑 ?也许给我们一些代码!
标签: c# .net wpf vb.net listview