WPF dispose de convertisseurs intégrés pour certains types. Si vous liez la propriété Source
de l'image à une valeur string
ou Uri
, sous le capot WPF utilisera un ImageSourceConverter pour convertir la valeur en ImageSource
.
Alors
<Image Source="{Binding ImageSource}"/>
fonctionnerait si la propriété était ImageSource une représentation de chaîne d'un URI valide à une image.
Vous pouvez bien sûr rouler votre propre convertisseur de reliure:
public class ImageConverter : IValueConverter
{
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
return new BitmapImage(new Uri(value.ToString()));
}
public object ConvertBack(
object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
et l'utiliser comme ceci:
<Image Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}"/>
(En fait, le convertisseur de type ne crée pas 'BitmapImage', mais une autre sous-classe de' ImageSource': 'BitmapFrameDecode', qui est interne.) –
@ H.B. Comment vous convertir si vous vouliez persister le changement de l'image? – Igor
Alternative à un convertisseur: Faites votre propriété à laquelle vous liez (ici: 'ImageSource') de type' Uri' ou 'BitmapImage' et cast là. Si vous avez besoin de traiter les valeurs possibles de 'null' (cast a échoué etc.) ajoutez' TargetNullValue = {x: Null} 'à votre liaison. – Gerrit