WPF列表框在用户滚动时生成项目

本文关键字:项目 滚动 用户 列表 WPF | 更新日期: 2023-09-27 18:19:13

我试图使用ListBox向用户显示可能无限的选项列表。目前,我只是在任意点切断列表,但我希望允许用户向下滚动,只要他们想要的。另外,我希望尽可能避免生成不可见的项目,因为生成每个项目都需要进行一些计算。

我试着写listBox.ItemsSource = enumerable期望它只要求可枚举的可见项目,但相反,它试图读取所有的项目,导致无限循环,如果有无限多的项目。

我最好的想法是添加一个侦听器,每当ListBox向下滚动并添加新项目时,都会收到通知,以便在最后一个项目可见后总是有k更多项目(其中k可能是一次可见的项目数量,因此Page down工作)。

有没有更干净的方法来处理这个?

WPF列表框在用户滚动时生成项目

我会使用VirtualizingStackPanel使UI绘制更少的元素,然后使用数据虚拟化技术来限制您在内存中保留的数据。点击这里查看更多细节(特别是Bea Stolnitz的博客文章)