@ AresAvatar прав, предлагая вам использовать ValueConverter, но эта реализация не помогает ситуации.Это делает:
public class NullImageConverter :IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return DependencyProperty.UnsetValue;
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// According to https://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.convertback(v=vs.110).aspx#Anchor_1
// (kudos Scott Chamberlain), if you do not support a conversion
// back you should return a Binding.DoNothing or a
// DependencyProperty.UnsetValue
return Binding.DoNothing;
// Original code:
// throw new NotImplementedException();
}
}
Возвращение DependencyProperty.UnsetValue
также решает проблемы производительности из-за выброса (и игнорирования) всех этих исключений.Возвращение new BitmapSource(uri)
также избавит от исключений, но производительность все равно будет падать (и в этом нет необходимости).
Конечно, вам также понадобится сантехника:
В ресурсах:
<local:NullImageConverter x:Key="nullImageConverter"/>
Ваше изображение:
<Image Source="{Binding Path=ImagePath, Converter={StaticResource nullImageConverter}}"/>