加起来 4 个月前的一个帖子,不幸的是没有收到任何答案。
在带移位的数据网格中使用多选时,我基本上遇到了同样的问题。
当在一个巨大列表中间的某个地方(比如网格中有 1,000,000 个项目,所有数据都虚拟化)并且我要使用 shift + 鼠标单击从 500,000 到 500,050 中进行选择时,网格调用我的“GetEnumerator()”方法虚拟列表(类似于文森特和保罗的实现)。到目前为止,我所做的只是缓存页面上的 SelectMany。但不幸的是,导致没有正确选择行(而 ctrl + 鼠标单击完成了这项工作!)。
所以我发现,DataGrid 实际上需要从索引 0 到最后一个选择的所有项目。显然,这对于 1m 个项目的列表并不理想,因为这将导致从 0 到(在我的示例中)500,050 的每个项目的请求,从而加载所有表单数据库。
所以我的问题与上面发布的链接中丹尼尔的问题相同:
为什么 DataGrid 多次请求项目(选定的项目被连续请求约 6-7 次,没有明显的原因)?
有没有办法告诉 DataGrid 不要使用 Enumerator 并只获取选定的项目而不是从 0 开始迭代?
非常感谢,希望我有更多的运气至少能得到发人深省的答案,因为关于数据虚拟化的内容并不多。