私は起こっていることが競合状態だと思います。画像の中には、表示を依頼するときにダウンロードが完了していないものがあります。私は総括よここhttp://social.msdn.microsoft.com/Forums/en/wpf/thread/dc4d6aa9-299f-4ee8-8cd4-27a21ccfc4d0を与えかなり良い例があります:値が第一である時には、上記のコードで
private ImageSource _Src;
public ImageSource Src
{
get { return _Src; }
set
{
_Src = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Src"));
((BitmapImage)_Src).DownloadCompleted += new EventHandler(MainWindow_DownloadCompleted);
}
}
void MainWindow_DownloadCompleted(object sender, EventArgs e)
{
PropertyChanged(this, new PropertyChangedEventArgs("Src"));
((BitmapImage)_Src).DownloadCompleted -= MainWindow_DownloadCompleted;
}
は、あなたの財産に結合されているあなたのイメージはのPropertyChangedコールで更新するように指示されます画像が100%ダウンロードされた後に割り当てられます。これは、上の例で使用されているDownloadCompletedイベントハンドラで処理されます。これにより、彼らはもう黒いイメージとして表示されなくなりますが、完全に準備された自己として表示されます。
また、画像のソースとしてストリームを使用している場合は、BitmapCacheOption.OnLoadを必ず使用する必要があります。以下のような:
BitmapImage source = new BitmapImage();
source.BeginInit();
source.CacheOption = BitmapCacheOption.OnLoad;
source.StreamSource = yourStream;
source.EndInit();
これは、ソースを使用して画像ので、デフォルトではあります遅延ロードも、その後で、あなたのストリームは、おそらくあなたは、ブランク/黒画像を取得する理由もすることができた、閉じられています。
幸運。
注:イメージをローカルにダウンロードすることでこの問題を解決しようとしましたが(これは意味があったため、限られた数の製品しか持っていませんでしたが)、まだ問題があります。だから、それは間違いなく競合状態ですが、ネットワーク活動に限らず、ローカルファイルURIからロードすることさえも問題は残っています –