使用图像加载列表框的正确方法

时间:2013-08-19 16:36:34

标签: c# xaml windows-phone

我有一个场景,我有一个带图像的列表框。 我已将图像加载到列表框中,但列表框加载速度非常慢。

我希望以更快的方式加载列表框。再次当我第二次加载列表框时,它也会减慢应用程序的速度。但有没有办法在某处存储图像 在隔离的存储器中或任何地方,以便在第二次加载时可以如此快速地加载它。

作为一个整体,我想要一种更快的方式来加载列表框图像。这是我的代码:

public MainPage()
{
    InitializeComponent();
    getImages();

}
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());//out of memory exception
            img mediaImage = new img();
            mediaImage.Imgs = image;
            imageList.Items.Add(mediaImage);
        }
    }
    catch (Exception ex)
    {

    }

}
public class img
{
    public img()
    { }
    public BitmapImage Imgs { get; set; }
}

在Xaml ......

<ScrollViewer Name="sc" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" Margin="0,422,0,43">
        <ListBox Name="imageList" SelectionChanged="imageList_SelectionChanged_1" Height="126">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate >
                    <StackPanel Orientation="Horizontal"></StackPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate >
                    <StackPanel Orientation="Horizontal">
                    <Image Margin="10" Name="image1" Source="{Binding Imgs}" Height="150" Width="150"></Image>
                        </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </ScrollViewer>
  1. 请告诉我如何快速加载图片。
  2. 还在第二次加载页面或点击后退按钮,在getimages() picture.getimage()方法中显示OutOfOemoryException(我已用代码编写)。

0 个答案:

没有答案