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; }
    }

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...助けて-.....

2.また、ページを2回目に更新またはロードするか、戻るボタンをクリックすると、picture.getimage()のgetimages()メソッドでメモリ不足の例外が表示されます(コードで記述しました)。

だから助けてください......

4

1 に答える 1

0

最初に、 Windows Phone App ProfilingWindows Phone Application Analysisを使用してパフォーマンス カウンターを確認することをお勧めします。これらの 2 つは、いつ、どこでパフォーマンスがヒットするかについてのアイデアを提供します。2番。大量のデータを仮想的にロードできるデータ仮想化の概念があります。同じことの詳細については、こちらを参照してください。このリンクは Windows アプリ用ですが、ほとんど Windows Phone にも当てはまります。

最後に、ビューとデータが分離され、デバッグが容易になる MVVM のようなパターンを使用することをお勧めします。ただし、これは必須ではありません。

お役に立てれば。

于 2013-08-17T20:11:20.287 に答える