一部の画像が最初に存在しない場合、ListBox に画像のリストを表示する際に問題が発生します。
不足している画像が作成された後、それらを再読み込みしようとしましたが、それでも AG_E_NETWORK_ERROR が発生します。また、持っているフラッシュ メモリから画像を読み込んでいるので、画像が存在していると確信していますD:\Work\SilverlightApplication2\SilverlightApplication2\Bin\Debug\SilverlightApplication2TestPage.html
。
この設定は Silverlight 4 では機能しますが、Silverlight 5 では機能しません。
詳細:
ListBox を使用して Silverlight アプリケーションを作成しました。ObservableCollection
ListBox は、リストのThumbnailItem
各項目にバインドされThumbnailPath
、画像のパスへの文字列であるプロパティを持っています。
のファイルThumbnailPath
は最初は存在しない可能性がありますが、存在することが確実になったら、イベントを呼び出して 、変更されたPropertyChanged
バインドされている人に通知します。ThumbnailPath
これをテストする簡単な方法は、フラッシュ ドライブを挿入せずに Silverlight アプリケーションをロードすることです。画像の読み込みに失敗した後、フラッシュ ドライブを挿入し、更新ボタンを押しました。
public class ThumbnailItem : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string ThumbnailPath { get; set; }
public void NotifyThumbnailPathChanged() { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("ThumbnailPath")); }
}
public partial class MainPage : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<ThumbnailItem> lImages { get; set; }
public MainPage() { ... }
private void userControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
//loading the list items
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/262594030.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1276943735.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1632696970.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1656387141.jpg.original.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1699209377.jpg" });
}
private void ButtonRefresh_Click(object sender, System.Windows.RoutedEventArgs e)
{
//refreshing the list after the images exist
foreach (ThumbnailItem tsi in lImages)
{
string temp = tsi.ThumbnailPath;
tsi.ThumbnailPath = null;
tsi.NotifyThumbnailPathChanged();
tsi.ThumbnailPath = temp;
tsi.NotifyThumbnailPathChanged();
}
}
}
TL; DR; 存在しなかったが現在存在するイメージへのバインディングをリロードする方法