J'ai créé un contrôle utilisateur de petite taille composé d'un bouton dont le contenu est une image. J'ai créé une propriété de dépendance "ImageSource" sur le contrôle utilisateur afin de lier à partir de l'image à l'intérieur du bouton.Propriété de dépendance ImageSource sur un contrôle utilisateur - Jeu de valeurs XAML
Toutefois, dans le XAML où je posai une instance de mon contrôle utilisateur définissant la propriété renvoie une erreur lors de l'exécution:
<ctrl:ImageButton ImageSource="/Resources/Images/Icons/x.png" Command="{Binding Reset}" DisabledOpacity="0.1"/>
et à l'exécution:
«/Ressources/Images/Icônes/x La chaîne .png 'n'est pas une valeur valide pour la propriété' ImageSource 'du type' ImageSource '. Le type 'ImageSource' n'a pas de classe publique TypeConverter.
J'ai ensuite créé un convertisseur:
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();
}
}
puis décoré ma propriété de dépendance avec elle:
[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); }
}
mais encore WPF ne convertit pas ma chaîne à une ImageSource (BitmapImage) par exemple ..
Que faire?
pouvez-vous montrer dans le code comment cette dernière partie (ImageBrush.ImageSource.AddOwner) serait utilisée? Merci – Berryl
Merci! Ça a marché! :) –