Silverlight图像绑定问题

时间:2011-03-16 14:35:18

标签: data-binding silverlight-4.0

我正在尝试将图像的网址(BigImageURL)与图像控件绑定。它工作得很好,但对于一些图像我得到HTTP 403错误(发现使用提琴手),显然图像不会显示。我希望显示静态图像,以防http网址未解析。

<Image x:Name="HoverImage" Source="{Binding BigImageURL}" />

我试着写一个转换器

public class UriToImageSourceConverter : IValueConverter
{

    public object Convert(object value, Type targetType,object parameter, CultureInfo culture)
    {
        BitmapImage image = null;
        try
        {
             image = new BitmapImage(new Uri(value.ToString()));
        }
        catch (Exception ex)
        {
            image= new BitmapImage(new Uri("..<mydefaultimageUrl>.."));
        }
        return image;
    }

    ...
}

<Image x:Name="HoverImage" Source="{Binding BigImageURL,Converter={StaticResource myUriToImageSourceConverter}" />

没用!! 即使图像URL无法访问,转换器也没有抛出任何异常。我不认为它在创建BitmapImage时尝试解析地址或读取图像流

尝试设置FallbackValue但它也不起作用。

 <Image x:Name="HoverImage" Source="{Binding BigImageURL,FallbackValue=DefaultUrl}"/>

任何指针??

提前致谢

1 个答案:

答案 0 :(得分:1)

实际上你必须做这样的事情

 <Image x:Name="HoverImage" Source="{Binding BigImageURL}" 
        ImageFailed="HoverImage_ImageFailed" />

并添加事件处理程序

    private void HoverImage_ImageFailed(object sender, ExceptionRoutedEventArgs e)
    {
        var expection = e.ErrorException; // Here we could know what happend
        HoverImage.Source = someDefaultUrl; // And here we add default Url...
    }

在silverligth中,您必须在事件的帮助下处理装载程序图像和图像异常...不要在这种情况下使用数据绑定..