如何在WinRT上实现延迟加载GridView?

如何在WinRT上实现延迟加载GridView?,gridview,windows-runtime,microsoft-metro,lazy-loading,scrollviewer,Gridview,Windows Runtime,Microsoft Metro,Lazy Loading,Scrollviewer,我需要实现拇指的gridview。但当我的应用程序点击200个拇指时,它开始出现内存问题(当然)。我需要实现一个延迟加载,但我不知道如何检测scrollviewer在gridview上的位置,以便在它到达最后时尝试加载更多图像 以下是我的gridview布局: 有人知道怎么做吗?在源代码集中实现以支持数据虚拟化,而GridView本身将处理更多项目的请求。还要确保您没有将GridView的ItemsPanel更改为不支持UI虚拟化的VariableSizedWrapGrid 还要确保你不会因为

我需要实现拇指的gridview。但当我的应用程序点击200个拇指时,它开始出现内存问题(当然)。我需要实现一个延迟加载,但我不知道如何检测scrollviewer在gridview上的位置,以便在它到达最后时尝试加载更多图像

以下是我的gridview布局:

有人知道怎么做吗?

在源代码集中实现以支持数据虚拟化,而
GridView
本身将处理更多项目的请求。还要确保您没有将
GridView
ItemsPanel
更改为不支持UI虚拟化的
VariableSizedWrapGrid


还要确保你不会因为任何其他原因导致内存泄漏。通常,UI虚拟化的200项网格(默认)不应该使用那么多内存,除非您的拇指实际分辨率比您需要显示它们的分辨率大得多。检查调试泄漏的方法。

您可以自己创建拇指:只创建较小的图像-仅此而已

   new BitmapImage(new Uri(Path)) {DecodePixelWidth = 200}

谢谢,伙计。您知道在哪里可以找到有关如何以较小尺寸加载图像的信息吗?在
VariableSizedWrapGrid
中使用
ISupportIncrementalLoading
的任何解决方法?@adheus请查看WinRT XAML工具包,了解如何以特定分辨率加载图像,尽管如果您可以控制图像的来源,最好是以特定的分辨率创建/请求图像。@Xyroid我以前从未实际使用过
ISupportIncrementalLoading
,尽管我在回答中使用了as。在您的工作环境中,您需要什么具体的东西
VariableSizedWrapGrid
不是虚拟化的,因此即使它与数据虚拟化一起工作,也会泄漏数据。@Xyroid我建议不要将
VariableSizedWrapGrid
用于超过几十个项目。如果你真的想这样做,你可能应该考虑在项目滚动到视图中时延迟加载数据(例如图像),以及某种循环缓冲区来卸载最近未请求或未显示的数据。然后还可以使用附加属性将
GridViewItem
VariableSizedWrapGrid.RowSpan/ColumnSpan
属性绑定到数据项,或者尝试从
ItemTemplate
遍历可视化树以设置父GridViewItem的范围。都是些乱七八糟的东西。