Я создал небольшой пользовательский элемент управления, состоящий из кнопки, содержимое которой представляет собой изображение.Я создал свойство зависимости «ImageSource» в пользовательском элементе управления, чтобы связать его с изображением внутри кнопки.
Однако в XAML, где я поместил экземпляр настройки своего пользовательского элемента управления, это свойство выдает ошибкуво время выполнения:
<ctrl:ImageButton ImageSource="/Resources/Images/Icons/x.png" Command="{Binding Reset}" DisabledOpacity="0.1"/>
и во время выполнения:
'/ Resources / Images / Icons / x.png' строка не является допустимым значением свойства ImageSource типа 'ImageSource',Тип 'ImageSource' не имеет общедоступного класса TypeConverter.
Затем я создал конвертер:
public class StringToBitmapImage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return new BitmapImage(new Uri((string) value, UriKind.RelativeOrAbsolute));
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
, а затем украсил им свое свойство зависимости:
[TypeConverter(typeof(StringToBitmapImage))]
public static readonly DependencyProperty ImageSourceProperty = DependencyProperty.Register(
LambdaHelper.GetMemberName<ImageButton>(ib => ib.ImageSource), typeof (ImageSource), typeof (ImageButton));
[TypeConverter(typeof(StringToBitmapImage))]
public ImageButton ImageSource
{
get { return (ImageButton)GetValue(ImageSourceProperty); }
set { SetValue(ImageSourceProperty, value); }
}
но WPF все равно не преобразует мою строку в экземпляр ImageSource (BitmapImage) ...
Что делать?