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 を作成する方法を誰でもアドバイスできますか。どんなアドバイスや例も役に立ちます。