2

以下の XAML は、Source が実際の画像を指している場合に機能します。

<Image Source="http://somewhere.com/somewhere.png" />

ただし、ソースが短縮 URL サービスからのリダイレクトである場合、画像の読み込みに失敗します。

これを処理する簡単な方法はありますか、それともうさぎの穴を下って自分でリダイレクトを処理する必要がありますか?

4

1 に答える 1

2

AllowAutoRedirectフラグがtrueWebClient インスタンスに設定されているため (ここの解説を参照)、次の方法が機能する可能性があり、リダイレクトを処理する最も簡単な方法である可能性があります。ただし、リダイレクトされた画像の URL が手元になかったため、テストしていないことに注意してください。

var url = ...
var buffer = (new WebClient()).DownloadData(url);
var bitmap = new BitmapImage();

using (var stream = new MemoryStream(buffer))
{
    bitmap.BeginInit();
    bitmap.CacheOption = BitmapCacheOption.OnLoad;
    bitmap.StreamSource = stream;
    bitmap.EndInit();
}

image.Source = bitmap;

動作する場合は、このコードをバインディング コンバーターに入れることができます。


以上のことから、WPF の組み込み型コンバーター (URL 文字列から ImageSource へ) も HttpWebRequest または WebClient のいずれかを使用することが期待されます。両方のデフォルトの動作は、リダイレクトを許可することです。そのため、他の理由でリダイレクトが失敗する可能性があります。

于 2013-06-24T08:38:20.327 に答える