更快的方式加载Windows Phone中的列表框图像

时间:2013-08-17 05:46:19

标签: windows-phone

我正在开发使用列表框的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.所有工作都很完美。但问题是当页面加载时,加载速度变得很慢。即使加载也需要很多时间。我需要一种更快的方式加载这些图像,这样图像可以在几秒钟内加载到列表框中。实际上有任何方法可以将列表框图像分开,以便快速加载。 Plsss ... help -.....

2.另外当第二次刷新或加载页面或点击后退按钮时,在picture.getimage()中的getimages()方法中,它显示内存异常(我已用代码编写)。

所以请帮忙......

1 个答案:

答案 0 :(得分:0)

首先,我建议使用Windows Phone App Profiling&amp;使用Windows Phone Application Analysis。这两个将给出关于性能何时何地被击中的想法。第二。存在数据虚拟化的概念,其允许虚拟地加载大量数据。您可以找到有关相同here的更多信息。此链接适用于Windows应用程序,但也适用于Windows Phone。

最后,我建议使用MVVM类型的模式,其中视图和数据将是分开的并且易于调试。但是,这不是必需的。

希望,这有帮助。