有没有办法处理这个绑定错误?

时间:2014-07-07 17:30:29

标签: wpf xaml binding

我使用自定义控件CachedImage(github here- https://github.com/floydpink/CachedImage

此控件自动缓存我需要的图像,因为它大大加快了我的应用程序。但是,当图像源是死链接时,控件似乎不会处理,这有时会在应用程序中发生(即,如果用户因任何原因删除了图像)并且不可避免。

当控件设置为具有死链接的源时,整个应用程序崩溃并且我得到System.NotSupportedException"找不到适合于完成此操作的成像组件"。

首先,有没有办法尝试/捕获这些类型的绑定错误?无论自定义控件如何处理它,如果我可以自己处理这个异常,我可以很容易要么忽略图像,要么给它一个更好的来源,甚至忽略它。我的整个应用程序没有理由崩溃。如果我围绕触发绑定Content.ItemsSource = query.ToList()的语句,应用程序在try循环中崩溃,甚至没有进入catch块......

如果没有,我可以将任何错误逻辑合并到绑定中吗?我认为不应该成为问题的另一件事是设置默认值(一些问号类型图像要提供服务)但是,如果我将FallBackValue或TargetNullValue设置为此图像,则控件在其源失败时仍会崩溃。我已经阅读了很多关于绑定的内容,但它对我来说似乎仍然是巫术,如果基本绑定失败,有没有办法有选择地绑定到默认图像?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用带有绑定的IValueConverter并在适当的null图像源的convert方法句柄中使用。有关详细信息:ConvertersMSDN

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    if (value == null)
    {
        //Handle 

    }
    return value;
}