Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF列表框在用户滚动时生成项目_C#_.net_Wpf_Listbox_Infinite Sequence - Fatal编程技术网

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

C# WPF列表框在用户滚动时生成项目,c#,.net,wpf,listbox,infinite-sequence,C#,.net,Wpf,Listbox,Infinite Sequence,我试图使用列表框向用户显示可能无限的选项列表。目前,我只是在任意点切断列表,但我想允许用户向下滚动到他们想要的地方。此外,我希望尽可能避免生成不可见的项,因为必须进行一些计算才能生成每个项 我尝试编写listBox.ItemsSource=enumerable,希望它只询问可枚举的可见项,但它尝试读取所有项,如果有无限多个项,则会导致无限循环 我最好的办法是添加一个侦听器,每当ListBox向下滚动时,该侦听器就会收到通知,并添加新项目,以便在最后一个可见项目之后总是有k更多的项目(其中k可能是

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

我尝试编写
listBox.ItemsSource=enumerable
,希望它只询问可枚举的可见项,但它尝试读取所有项,如果有无限多个项,则会导致无限循环

我最好的办法是添加一个侦听器,每当
ListBox
向下滚动时,该侦听器就会收到通知,并添加新项目,以便在最后一个可见项目之后总是有
k
更多的项目(其中
k
可能是一次可见项目的数量,因此向下翻页有效)


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

我会使用
虚拟化StackPanel
来让UI绘制更少的元素,然后使用数据虚拟化技术来限制内存中保存的数据。查看更多详细信息(特别是这里引用的Bea Stolnitz的博客条目)。

看起来“数据虚拟化”是我在搜索中遗漏的关键词。Bea Stolnitz的博客看起来很有用。