0

リストボックスを使用している 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; }
}

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

メディアライブラリからリストボックスに画像をすばやくロードするためのヒントを教えてください....

4

2 に答える 2

0
  • 仮想化リストを使用することが重要です (たとえば、 with ではなく ListBox [with , default] を使用しますVirtualizedStackPanel) 。ScrollViewerItemsControl

  • LowProfileImageLoaderを使用して画像の読み込みを高速化できるかもしれません (WP8 で本当に必要かどうかはわかりません)。

  • 画像の読み込みを改善してみてください (例: サーバーの高速化、プロキシの回避など)。あなたのボトルネックはどこですか?

  • LowProfileImageLoaderさらにImageHelperクラスを開発し、 ExtendedListBox も開発しまし。これら 2 つのコンポーネントを使用すると、スクロール中の画像の読み込みを回避できるため、スクロールのパフォーマンスが向上します。

  • イベントには、より多くの要素をロードするためのExtendedListBoxscrolled to end イベントがあります (一度にすべての要素をロードしないでください)。これはコントロールでも可能だと思いますLongListSelector。@BartWの回答を参照してください。

より良いサポートができるように、さらにコードを表示してください...

于 2013-08-27T23:38:36.427 に答える
0

ユーザーがリストをスクロールしている間に、 LongListSelectorを使用してより多くの画像を読み込むことができます。

Windows Phone ユーザーは、電話をスムーズにスワイプして必要な情報にアクセスすることを好みます。パノラマ コントロールとピボット コントロールを介して水平方向にスワイプするか、People Hub などの領域で垂直方向のリストをスワイプするかに関係なく、ユーザーは電話を小さなウィンドウとして表示し、無限の有用な情報を表示します。

私たち開発者は、ユーザーがスワイプしている間、常にビューポートで情報を利用できるようにする責任があります。この無限スクロールの認識を維持するには、すべてのデータをメモリにロードする必要があります。ただし、ほとんどの実際的なシナリオでは、すべてのデータを事前にロードすることはできません。ピープル ハブのニュース フィードは、Web サービスから新しいデータをフェッチする典型的な例です。

この記事では、LongListSelector コントロールを使用して Windows Phone 7.5 用の無限にスクロール可能なリストを作成するために情報をプリフェッチする方法について説明します。このアプローチは、「読み込み... パターン」と呼ばれることもあります。</p>

于 2013-08-27T21:33:45.180 に答える