使用LongListSelector中的图像批量数据

时间:2013-12-09 13:50:00

标签: c# windows-phone-8 silverlight-4.0

以下是我的应用程序的一个屏幕,在每次对服务器(WCF)的搜索调用中加载大约100个项目。

enter image description here

我有以下两个问题。

一个:目前我正在将所有结果项目分配给长列表选择器的itemssource,但我想最初加载10个项目,当用户向下滑动几乎结束时再加载10个项目。在许多应用程序(foursquare)中已经看到过这种行为,但无法弄清楚因为我是Silverlight的新手。

二:如果项目有图像,则PicturePath设置为服务器图像路径,否则设置本地无图像路径。问题是当图像被下载时,图像区域显示为空白,直到它完全下载然后开始显示图像,我需要它像foursquare显示,直到图像完全加载。下面给出了我的绑定代码以及我的要求。

enter image description here enter image description here                                              

感谢。

1 个答案:

答案 0 :(得分:0)

用一堆代码回答这两个问题毫无意义。

关于第一个问题,您需要一种方法来检测用户何时滚动到ListBox / LongListSelector的底部。您需要使用ObservableCollection而不是简单的List,因为ObservableCollection会在新项目添加到UI时通知UI。

此问题之前曾被问过几十次,for example see here

关于第二个问题,最简单的解决方案是在ItemTemplate中使用两个图像,一个在另一个图像的顶部。这样,当动态为空时,将显示静态的本地图像,当下载动态图像时,它将覆盖静态图像。它渲染在静态图像之上,就好像静态图像不存在一样。

<Grid>
    <Image Source="Assets/StaticImageFromLocalCache.jpg" Width="400" Height="400" />
    <Image Source="Assets/DynamicImageFetchedFromInternet.jpg" Width="400" Height="400" />
</Grid>