Windows phone 7 提高windows phone中listbox的性能

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();

我正在开发一个使用列表框的windows phone应用程序。我正在绑定媒体库中的一些图像。但加载这些图像需要很多时间。因此,如果媒体库中有很多图像,则需要很多时间

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
    甚至有一个滚动结束事件来加载更多元素(不要一次加载所有元素)。我认为这也可以通过
    LongListSelector
    控件实现,请参见@BartW的答案


向我们展示更多的代码,以便我们能够更好地帮助您……

使用实现虚拟化的列表框。像
LongListSelector
或Telerik的
RadDataBoundListBox
一样,您也应该使用缩略图,而不是全尺寸图像。@安东感谢您的回复,但我使用的是带有图像的列表框,正如我所说的。所以在选择之后listbox图像,所选项目绑定到一个大图像源,我只想知道如何将此缩略图转换为高分辨率图像。可能是使用某种ID?很难猜测,而且您没有显示任何代码。Hi Igrali,我已更新了我的问题并添加了代码。实际上我正在拍摄缩略图,那么如何将这些缩略图转换为Hi我的图像中的gh分辨率图像。来源感谢回复Rico,我看到了您的lowProfileImageLoader,但问题是,正如我上面所说,我正在将listbox selecteditem绑定到一个大图像源,我发现如果我加载缩略图,它加载得非常快,因此我想知道在选择listbox selected item之后,如何将缩略图转换为高分辨率图像。图像本身大还是图像数量多?如何访问图像?在自己的服务器上?嗨,Rico,我更新了我的问题并添加了代码。实际上我正在拍摄缩略图,那么如何在我的图像中将这些缩略图转换为高分辨率图像。来源