I'm binding the Source property of an Image to a string. This string may be null in which case I just don't want to display an Image. However, I'm getting the following in my Debug output:
System.Windows.Data Error: 23 : Cannot
convert '<null>' from type '<null>' to
type
'System.Windows.Media.ImageSource' for
'en-AU' culture with default
conversions; consider using Converter
property of Binding.
NotSupportedException:'System.NotSupportedException:
ImageSourceConverter cannot convert
from (null). at
System.ComponentModel.TypeConverter.GetConvertFromException(Object
value) at
System.Windows.Media.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext
context, CultureInfo culture, Object
value) at
MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object
o, Type destinationType,
DependencyObject targetElement,
CultureInfo culture, Boolean
isForward)'
I'd prefer if this wasn't displayed as it's just noise – is there any way to suppress it?
Best Answer
@AresAvatar is right in suggesting you use a ValueConverter, but that implementation does not help the situation. This does:
Returning
DependencyProperty.UnsetValue
also addresses the performance issues from throwing (and ignoring) all those exceptions. Returning anew BitmapSource(uri)
would also get rid of the exceptions, but there is still a performance hit (and it isn't necessary).Of course, you'll also need the plumbing:
In resources:
Your image: