Windows phone 7 提高windows phone中listbox的性能
我正在开发一个使用列表框的windows phone应用程序。我正在绑定媒体库中的一些图像。但加载这些图像需要很多时间。因此,如果媒体库中有很多图像,则需要很多时间Windows phone 7 提高windows phone中listbox的性能,windows-phone-7,Windows Phone 7,我正在开发一个使用列表框的windows phone应用程序。我正在绑定媒体库中的一些图像。但加载这些图像需要很多时间。因此,如果媒体库中有很多图像,则需要很多时间 private List<img> _galleryImages = new List<img>(); public void getImages() { try { MediaLibrary mediaLibrary = new MediaLibrary();
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; }
}
private List\u galleryimage=new List();
public-void-getImages()
{
尝试
{
MediaLibrary MediaLibrary=新的MediaLibrary();
var pictures=mediaLibrary.pictures;
foreach(图片中的var图片)
{
BitmapImage=新的BitmapImage();
image.SetSource(picture.GetImage());
img mediaImage=新img();
Imgs=image;
_GalleryImage.Add(mediaImage);
}
}
捕获(例外情况除外)
{
}
}
公共类img
{
公共位图图像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;
}
私有无效图像列表\u选择已更改\u 1(对象发送者,选择更改已更改)
{
MediaLibrary MediaLibrary=新的MediaLibrary();
BitmapImage=新的BitmapImage();
image.SetSource(mediaLibrary.Pictures[imageList.SelectedIndex].GetImage());
图像1.源=图像;
}
因此,请给我一些提示,以便快速地将图像从媒体库加载到列表框……当用户滚动列表时,您可以使用加载更多图像:
Windows Phone用户喜欢平滑地滑动手机以获取他们想要的信息。无论是通过全景和透视控件水平滑动,还是在人脉中心等区域垂直滑动列表,用户都将手机视为一个小窗口,可以看到无限量的有用信息
作为开发人员,我们有责任使其看起来和感觉像用户四处滑动时,信息始终在视口中可用。为了保持这种无限滚动的感觉,我们希望将所有数据加载到内存中。然而,对于大多数实际场景,我们不可能预先加载所有数据。People Hub中的新闻提要是从web服务获取新数据的经典示例
在本文中,我将介绍如何使用LongListSelector控件预取信息,为WindowsPhone7.5创建一个无限滚动列表。这种方法有时被称为“加载…模式”
- 使用虚拟化列表很重要(例如,使用ListBox[与
VirtualizedStackPanel一起使用,默认设置]而不是
与ScrollViewer
ItemsControl一起使用)
- 也许您可以使用来加快图像加载(我不确定WP8中是否真的需要它)
- 尝试改进图像的加载(例如,更快的服务器、避免代理等)。瓶颈在哪里
- 我进一步开发了
,并开发了一个。使用这两个组件,您可以避免在滚动时加载图像,从而提高滚动性能LowProfileImageLoader
甚至有一个滚动结束事件来加载更多元素(不要一次加载所有元素)。我认为这也可以通过ExtendedListBox
控件实现,请参见@BartW的答案LongListSelector
向我们展示更多的代码,以便我们能够更好地帮助您……使用实现虚拟化的列表框。像
LongListSelector
或Telerik的RadDataBoundListBox
一样,您也应该使用缩略图,而不是全尺寸图像。@安东感谢您的回复,但我使用的是带有图像的列表框,正如我所说的。所以在选择之后listbox图像,所选项目绑定到一个大图像源,我只想知道如何将此缩略图转换为高分辨率图像。可能是使用某种ID?很难猜测,而且您没有显示任何代码。Hi Igrali,我已更新了我的问题并添加了代码。实际上我正在拍摄缩略图,那么如何将这些缩略图转换为Hi我的图像中的gh分辨率图像。来源感谢回复Rico,我看到了您的lowProfileImageLoader,但问题是,正如我上面所说,我正在将listbox selecteditem绑定到一个大图像源,我发现如果我加载缩略图,它加载得非常快,因此我想知道在选择listbox selected item之后,如何将缩略图转换为高分辨率图像。图像本身大还是图像数量多?如何访问图像?在自己的服务器上?嗨,Rico,我更新了我的问题并添加了代码。实际上我正在拍摄缩略图,那么如何在我的图像中将这些缩略图转换为高分辨率图像。来源