2

如果 Source 指向实际图像,则下面的 XAML 有效。

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

但是,如果 Source 是来自 url Shortner 服务的重定向,则图像无法加载。

有没有一种简单的方法来处理这个问题,还是我必须自己去兔子洞并处理重定向?

4

1 回答 1

2

由于WebClient 实例的AllowAutoRedirect标志设置为(请参阅此处的备注),因此以下可能有效,并且可能是处理重定向的最简单方法。但是请注意,我没有对其进行测试,因为我手头没有重定向的图像 URL。true

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 回答