Gérer null lors de la liaison à une image dans XAML
J'ai un élément de l'Image dans le code XAML. - Je lier la propriété de la Source à une propriété de type chaîne dans mon ViewModel. Cependant, parfois, la valeur est null et puis j'ai des erreurs dans la fenêtre de débogage.
J'ai lu ici: ImageSourceConverter d'erreur à la Source=null que j'ai pu faire un convertisseur de retour DependencyProperty.UnsetValue si la valeur est null.
Maintenant je me demande si il est possible de le faire directement dans le XAML? Peut-être en utilisant un FallbackValue?
J'ai essayé quelques variantes, mais avec pas de chance.
C'est mon élément de l'Image dans le code XAML:
<Image Name="img" Source="{Binding Path=CurrentImageSource}" Stretch="None" />
Et CurrentImageSource est juste une chaîne de propriété sur le DataContext.
Le message d'erreur est:
Système.De Windows.Erreur De Données: 23 :
Ne peut pas convertir "de type" type
'Système.De Windows.Médias.ImageSource "pour" sv-SE " la culture avec par défaut
les conversions; envisager d'utiliser un Convertisseur de propriété de la Liaison.
NotSupportedException:'Système.NotSupportedException:
ImageSourceConverter impossible de convertir de (null).
source d'informationauteur Björn
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier une référence null à l'aide de données de déclenchement:
Alors qu'il n'est pas possible de tester directement si les deux valeurs sont différentes, vous pouvez voir si une valeur est plus grande ou plus petite, etc. à l'aide de cette approche Mike Hillberg blogué sur.
J'ai utilisé x:Null avec TargetNullValue, de cette façon, vous obtenez une simple image vide...
De cette façon, vous n'avez pas besoin de se compliquer la vie avec des Déclencheurs ou des BitmapImages que les ressources statiques.
Je ne l'ai pas testé, mais je pense que c'est ce TargetNullValue est pour:
Je viens de vérifier la réponse de Sascha Hennig. Il fonctionne bien de mon côté. J'ai juste une petite modification de mon côté (supprimer
/ImageNullRef;
en ressource d'image)<BitmapImage x:Key='defaultImage' UriSource='component/errorImage.png' />