我有一个ListView可能包含很多物品,所以它是virtualized和回收物品.它不使用排序.我需要刷新一些值显示,但是当项目太多时,更新所有内容的速度太慢,所以我只想刷新可见项目.
我怎样才能获得所有当前显示的项目列表?我试图调查ListView或者在里面ScrollViewer,但我仍然不知道如何实现这一目标.如果可以看到解决方案,解决方案不得通过所有项目进行测试,因为这样做太慢了.
我不确定代码或xaml是否有用,它只是一个Virtualized/ Recycling ListView它ItemSource与一个绑定Array.
编辑:
答案:
感谢akjoshi,我找到了方法:
得到ScrollViewer的ListView
(有FindDescendant方法,你可以做你自己用VisualTreeHelper).
读取它ScrollViewer.VerticalOffset:它是显示的第一个项目的编号
ScrollViewer.ViewportHeight:它是显示的项目数.CanContentScroll必须是真的.由于在启动 dart 应用程序之前需要进行编译,我想知道编译器预处理器是否可用,或者计划在不久的将来用于 Dart。
到目前为止,我在网上/飞镖网站内的搜索均未成功。
(通过预处理器,我的意思是:
#define max(A,B) ( (A) > (B) ? (A):(B))
Run Code Online (Sandbox Code Playgroud)
或者 :
#define NumType double
#define NumTypeZero 0.0
// used with :
NumType myNum = NumTypeZero;
Run Code Online (Sandbox Code Playgroud)
或者 :
#define DEBUG
// use
#ifdef DEBUG
print('var1 : $var1, var2:$var2, ...');
#endif
Run Code Online (Sandbox Code Playgroud)
)
编辑:我想知道为什么没有准备好预处理器,因为从那时起我们似乎“接近”了:
-Dart 必须扫描文件中的库依赖项才能以正确的顺序加载库。
- Dart 编辑器还会扫描文件以进行语法、类型检查和其他检查。
- 可以在编辑器中启动一些自动文件处理(我找不到有价值的链接,如果你有的话请告诉我)。