У меня есть этот переменные связывания с моей точкой зрения:Ошибка привязки при установке «DependencyProperty.UnsetValue;»
<Image Source="{Binding Path=GrappleTypeVar, Source={StaticResource CustomerData}, Converter={StaticResource GrappleDataConverter}}" Width="40" Height="40"/>
И потом, этот конвертер:
public class GrappleDataConverter : IValueConverter
{
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
int currentType = (int)value;
if (Enum.IsDefined(typeof(GrappleType), currentType))
{
switch ((GrappleType)currentType)
{
case GrappleType.Hydraulic:
return String.Empty;
case GrappleType.Parallel:
return "/GUI;component/Images/040/SensorSoft.png";
}
}
}
// Not defined... Set unknown image
return String.Empty;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
Используя этот код, мой результат окна возвращается много обязательных ошибки типа:
System.Windows.Data Information: 10: Не удается получить значение, используя привязку, и не существует действительного резервного значения; используя вместо этого по умолчанию. BindingExpression: Path = GrappleTypeVar; DataItem = 'CustomerData' (HashCode = 50504364); целевым элементом является «Изображение» (Name = ''); target is 'Source' (type 'ImageSource') Ошибка System.Windows.Data: 23: Невозможно преобразовать '' из типа 'String' в тип 'System.Windows.Media.ImageSource' для культуры 'en-US' с конверсии по умолчанию; рассмотрим использование свойства преобразования Binding. NotSupportedException: «System.NotSupportedException: ImageSourceConverter не может преобразовать из System.String.
Обзор эту ошибку, я обнаружил, что решение: ImageSourceConverter error for Source=null
И я изменил в своем коде:
case GrappleType.Hydraulic:
return String.Empty;
для
case GrappleType.Hydraulic:
return DependencyProperty.UnsetValue;
Теперь приложение работает гладко, но в В результате окна появляется следующая ошибка привязки: System.Windows.Data Information: 10: Не удается восстановить ve с использованием привязки и не существует допустимого значения возврата; используя вместо этого по умолчанию. BindingExpression: Path = GrappleTypeVar; DataItem = 'CustomerData' (HashCode = 62171008); целевым элементом является «Изображение» (Name = ''); target свойство «Source» (тип «ImageSource»)
Может ли кто-нибудь помочь мне? Можно ли решить эту ошибку?
Спасибо!
'Image.Source' - абстрактный тип' ImageSource' (который не может быть создан). В конвертере вместо строки вы должны вернуть объект производного класса, такой как «BitmapImage». – Peter