【发布时间】:2012-10-05 19:46:43
【问题描述】:
我在 Windows 8 Style App 中创建了一个搜索页面。我已经实现了 ISupportIncrementalLoading,当用户滚动分页时效果很好。
我遇到的问题是用户进行第二次搜索时。我显然不知道如何让 LoadMoreItemsAsync 再次触发。我尝试了以下方法:
1) 清除 Observable 且支持 ISupportIncrementalLoading 的底层集合。这会清除屏幕上的所有项目,因此我知道它已正确绑定。
2) 完全替换实现 ISupportIncrementalLoading 并引发 INotifyPropertyChanged 的底层集合实例,以便视图知道属性已更改。这也会清除屏幕上的所有项目。
但是,LoadMoreItemsAsync 不想在清除或替换基础集合实例后触发。我的预感是 UI 认为它不需要再加载了,但是因为我已经清除了所有它应该想要加载更多的项目。
我已验证 HasMoreItems 属性设置为 true。
如果它有帮助,很遗憾,如果您从 Windows 8 商店下载 FlixPicks,您会在生产中看到错误。重现的步骤是:
- 使用 Windows 搜索合同进行搜索
- 通知分页工作从搜索页面
- 再次搜索。
- 请注意,所有项目都已清除。 (此时 LoadMoreItemsAsync 没有触发)
感谢您提供的任何建议!
【问题讨论】:
-
我刚刚创建了一个似乎工作正常的复制品。这很简单,所以可能在那里丢失了一些东西。你能看一下并尝试看看有什么不同吗? box.com/s/ddr8138khigwe6n78i4b
-
嗨,Shahar,非常感谢您提供的示例。您的样品确实工作得很好。我已经对其进行了一些调整,使其不再起作用。我使用的是 GridView 而不是列表视图,并且我调整了每个项目的宽度。如果您好心,您可以看看调整后的代码库。为了重现你根本不滚动你必须一直向左然后点击开关或清除。如果您完全向右滚动,它就可以工作。 box.com/s/9oe4miksi4yeyhat6rwo 再次感谢!