0

我正在开发使用列表框的 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; }
    }

在 Xml...

    <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.第二次刷新或加载页面或单击后退按钮时,在picture.getimage() 的getimages() 方法中显示内存不足异常(我已编写代码)。

所以请帮助......

4

1 回答 1

0

首先,我建议使用Windows Phone App Profiling和使用 Windows Phone Application Analysis检查性能计数器。这两个将给出有关何时何地影响性能的想法。第二。有数据虚拟化的概念,它允许虚拟加载大量数据。您可以在此处找到更多相关信息。此链接适用于 Windows 应用程序,但也几乎适用于 Windows Phone。

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

希望这可以帮助。

于 2013-08-17T20:11:20.287 回答