在4个月前的一篇帖子中,我没有收到任何答案。现在我遇到了同样的问题,当在datagrid中使用多选时,按住shift键。
当在一个巨大的列表中(假设在网格中有1,000,000个项目,所有数据都是虚拟的),并且我使用shift +鼠标单击从500,000到500,050进行选择时,网格调用了我的虚拟列表的“GetEnumerator()”方法(与Vincent和Paul的类似实现)。 我做到现在只是在缓存的页面上进行了SelectMany。但不幸的是,结果导致行不能正确选择(而ctrl +鼠标单击可以完成工作!)。
因此,我发现DataGrid实际上期望从索引0到选择的最后一个所有项。显然,对于包含1m项的列表来说,这并不理想,因为这将导致每个项目从0到(在我的示例中)500,050的请求,从而加载所有数据库内容。
所以我的问题与上面链接中的Daniel的问题相同:
当在一个巨大的列表中(假设在网格中有1,000,000个项目,所有数据都是虚拟的),并且我使用shift +鼠标单击从500,000到500,050进行选择时,网格调用了我的虚拟列表的“GetEnumerator()”方法(与Vincent和Paul的类似实现)。 我做到现在只是在缓存的页面上进行了SelectMany。但不幸的是,结果导致行不能正确选择(而ctrl +鼠标单击可以完成工作!)。
因此,我发现DataGrid实际上期望从索引0到选择的最后一个所有项。显然,对于包含1m项的列表来说,这并不理想,因为这将导致每个项目从0到(在我的示例中)500,050的请求,从而加载所有数据库内容。
所以我的问题与上面链接中的Daniel的问题相同:
为什么DataGrid会多次请求项目(选择的项目会无缘无故地请求~6-7次)?
是否有一种方法告诉DataGrid不要使用Enumerator,而只需选择所选项目而不从0开始迭代?