1

IsolatedStorage に 1000 を超える画像 (サム) があり、それらを JumpList で表示する必要があります

XAML コードがあります。

<telerikData:RadJumpList   telerikCore:InteractionEffectManager.IsInteractionEnabled="True" Name="TitleCollection" ItemsSource="{Binding TitleCollection}">
<telerikData:RadJumpList.ItemTemplate >
 <DataTemplate>
    <StackPanel Orientation="Horizontal">                                    
        <Image Source= "{Binding Cover}" CacheMode="BitmapCache" />
        <TextBlock Text="{Binding FirstLine}" />                                        
    <StackPanel>
</DataTemplate>

とモデル

 public class TitleList : ViewModelBase
{      
    public String Id_on_server { get; set; }

    public String FirstLine
    {
        get;set;        
    } 

    private static Mutex _mut = new Mutex(false,"mutex control");

    BitmapImage _Cover;

   public BitmapImage Cover
    {
        get
        {             
            if (_Cover == null)
            {
                BackgroundWorker bw = new BackgroundWorker();
                bw.DoWork += new DoWorkEventHandler(
                    (object sender, DoWorkEventArgs e) =>
                    {
                        String fileName = App.ImageDirectory + "/" + this.Id_on_server + "_front_thumb.jpg";
                        Deployment.Current.Dispatcher.BeginInvoke(delegate()
                        {
                            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                            {
                                if (myIsolatedStorage.FileExists(fileName))
                                {
                                    try
                                    {
                                        _Cover = new BitmapImage();
                                        _Cover.SetSource(myIsolatedStorage.OpenFile(fileName, FileMode.Open, FileAccess.Read));
                                    }
                                    catch (Exception ex)
                                    {
                                        System.Diagnostics.Debug.WriteLine(ex.Message);
                                    }
                                }
                                else
                                {
                                    _Cover = new BitmapImage();
                                    _Cover.UriSource = new System.Uri("/Image/Movie.Icon.Default.png", System.UriKind.Relative);                                       
                                }
                            }
                        });
                    });

                bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
                    (object sender, RunWorkerCompletedEventArgs e) =>
                    {
                        _mut.ReleaseMutex();
                        Deployment.Current.Dispatcher.BeginInvoke(delegate()
                        {
                            RaisePropertyChanged("Cover");
                        });
                    }
                    );

                _mut.WaitOne();
                bw.RunWorkerAsync();
            }

            return _Cover;
        }
        set
        {
            _Cover = value;
            RaisePropertyChanged("Cover");
        }
    }
}

そのため、バックグラウンドで分離ストレージから画像を取得し、リストに表示します。このコードは機能しますが、JumpList がすばやくスクロールすると、アイテムの表示に大きな遅延が発生します。

多数の画像を正しく表示する方法や、LowProfileImageLoader のような有能な LoadDelay を作成する方法を誰でもアドバイスできますか。どんなアドバイスや例も役に立ちます。

4

1 に答える 1