带重定向的WPF图像控制源

时间:2013-06-23 15:33:55

标签: wpf

如果Source指向实际图像,则下面的XAML可以正常工作。

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

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

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

1 个答案:

答案 0 :(得分:2)

由于AllowAutoRedirect标志对于WebClient实例设置为true(请参阅备注here),以下内容可能有效,并且可能是处理重定向的最简单方法。但是请注意,我没有测试它,因为我手头没有重定向的图像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。对于这两种情况,默认行为是允许重定向。因此,您的案例中的重定向可能因其他原因而失败。