我正在尝试使用ListBox
向用户显示可能无限的选项列表。目前,我只是在任意点切断列表,但我想让用户尽可能地向下滚动。此外,我希望尽可能避免生成不可见的项目,因为必须进行一些计算才能生成每个项目。
我试着写listBox.ItemsSource = enumerable
期望它只询问可枚举的可见项,而是尝试读取导致无限循环的所有项目,如果有无限多的项目。
我最好的想法是添加一个监听器,在ListBox
向下滚动时收到通知,并添加新项目,以便在最后一个项目可见之后总共k
个项目(k
可能是一次可见的项目数,因此Page Down工作。)
有没有更简洁的方法来解决这个问题?
答案 0 :(得分:7)
我会使用VirtualizingStackPanel
来使UI绘制更少的元素,然后使用数据虚拟化技术来限制您在内存中保留的数据。查看更多详情here(特别是Bea Stolnitz在此引用的博客文章)。