WPF定向导航在ListView与数据虚拟化

本文关键字:数据 虚拟化 ListView 导航 WPF | 更新日期: 2023-09-27 18:05:40

根据这篇文章,我已经在WPF中用ListBox实现了数据和UI虚拟化。简而言之,我将ListView绑定到一个集合,该集合在需要时自动将数据加载到一个页面。如果ListView请求一个未加载的页面上的项,集合将返回null,异步加载页面,然后发出一个Reset NotifyCollectionChanged事件,以便ListView将拾取实际值。

当我尝试用方向键在列表中导航时,这工作得很好,直到我击中一个在ListView第一次接收焦点时未加载的项目。在这一点上,ListView本身成为焦点。如果我通过滚动列表来确保所有数据都加载了(从而强制所有项都被可视化并因此加载),定向导航就会像正常一样工作。

看起来ListView不知何故记住了最初为null的数据,并拒绝将焦点移到这些项上。这里发生了什么?我该如何解决这个问题?

WPF定向导航在ListView与数据虚拟化

结果是当集合被重置时焦点丢失了。为了避免这种情况,我提出了Replace notifications