我正在开发一个Windows手机应用程序,我正在使用一个列表框。我正在绑定媒体库中的一些图像。但是它需要花费很多时间来加载。所以如果媒体库中有很多图像,它将会这样很多时间。
private List<img> _galleryImages = new List<img>();
public void getImages()
{
try
{
MediaLibrary mediaLibrary = new MediaLibrary();
var pictures = mediaLibrary.Pictures;
foreach (var picture in pictures)
{
BitmapImage image = new BitmapImage();
image.SetSource(picture.GetImage());
img mediaImage = new img();
mediaImage.Imgs = image;
_galleryImages.Add(mediaImage);
}
}
catch (Exception ex)
{
}
}
public class img
{
public BitmapImage Imgs { get; set; }
}
在xaml ....
<toolkit:LongListSelector x:Name="imageList" IsFlatList="True" >
<toolkit:LongListSelector.ItemTemplate>
<DataTemplate >
<Image Name="im" Source="{Binding img}" Width="100" Height="100"/>
</DataTemplate>
</toolkit:LongListSelector.ItemTemplate>
</toolkit:LongListSelector>
private void imageList_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
MediaLibrary mediaLibrary = new MediaLibrary();
BitmapImage image = new BitmapImage();
image.SetSource(mediaLibrary.Pictures[imageList.SelectedIndex].GetImage());
image1.Source = image;
}
所以请给我一些提示,将图像从媒体库快速加载到列表框....
答案 0 :(得分:0)
当用户滚动列表时,您可以使用LongListSelector加载更多图片:
Windows Phone用户喜欢顺利刷手机以获取他们想要的信息。无论是通过全景和旋转控件水平滑动,还是在People Hub等区域中滑动垂直列表,用户都可以将手机视为一个小窗口,其中包含无限量的有用信息。
我们作为开发人员有责任让用户在浏览时在视口中始终提供信息。为了保持这种无限滚动的感觉,我们希望将所有数据加载到内存中。但是,对于大多数实际情况,我们不可能预先加载所有数据。 People Hub中的新闻源是从Web服务获取新数据的典型示例。
在这篇文章中,我将介绍如何使用LongListSelector控件预取信息以创建Windows Phone 7.5的无限可滚动列表。这种方法有时被称为“加载......模式”。
答案 1 :(得分:0)
使用虚拟化列表非常重要(例如,使用ListBox [VirtualizedStackPanel
,默认]而不是ScrollViewer
和ItemsControl
。
也许您可以使用LowProfileImageLoader来加载图片(我不确定WP8中是否真的需要)
尝试改善图像的加载(例如更快的服务器,避免代理等)。你的瓶颈在哪里?
我将LowProfileImageLoader
进一步发展到我的ImageHelper课程,并开发了ExtendedListBox。使用这两个组件,您可以避免在滚动时加载图像,从而提高滚动性能。
ExtendedListBox
甚至有一个滚动到结束事件来加载更多元素(不要一次加载所有元素)。我认为使用LongListSelector
控件也可以这样做,请参阅@ BartW的回答。
向我们展示更多代码,以便我们更好地帮助您......