Meilleur auteur de réponses
Plantage : ImageBrush du fond d'un Panorama en Binding

Question
-
Re-bonjour, encore moi ... :(
Cette fois-ci c'est l'image de fond de Panorama que j'ai essayé de passer en dynamique, et du coup l'appli plante complètement :S elle refuse d’interpréter ça :
<controls:Panorama.Background> <ImageBrush ImageSource="{Binding Source={StaticResource parametres}, Path=FondSource, Mode=OneWay}" Stretch="None" /> </controls:Panorama.Background>
Pour la variable parametres.FondSource , j'ai tenté avec tous les types possibles : string, ImageBrush, ImageSource...
Réponses
-
Bon sans voir le code, je peux déjà affirmer un truc : on ne peut binder une ImageBrush:ImageSource, il faut que tu bindes plus haut :
avec :<controls:Panorama.Background="{Binding Source={StaticResource parametres}, Path=Test, Mode=OneWay}" > ...
public ImageBrush Test{ get { return new ImageBrush() { ImageSource = new BitmapImage() { UriSource = new Uri("/ApplicationIcon.png", UriKind.Relative) } }; } }
voila !
S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue- Marqué comme réponse Neo33ASM jeudi 28 juillet 2011 23:39
-
et si tu veux garder ta string :
<controls:Panorama.Background="{Binding Source={StaticResource parametres}, Path=BackgroundImage, Mode=OneWay}" >
avec :
public ImageBrush BackgroundImage{ get { return new ImageBrush() { ImageSource = new BitmapImage() { UriSource = new Uri(FondSource, UriKind.Relative) } }; } }
en pensant à faire un PropertyChanged de "BackgroundImage" dans ta propriété FondSource
S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue- Marqué comme réponse Neo33ASM jeudi 28 juillet 2011 23:39
-
derniere solution, le converter :
public class StringToImageBrushConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return new ImageBrush() { ImageSource = new BitmapImage() { UriSource = new Uri(value as string, UriKind.Relative) } }; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return DependencyProperty.UnsetValue; } }
avec<controls:Panorama Background="{Binding Source={StaticResource parametres}, Path=FondSource, Converter={StaticResource StringToImageBrushConverter},Mode=OneWay}" >
il faudra juste penser a déclarer le converter dans le App.xaml
S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue- Marqué comme réponse Neo33ASM vendredi 29 juillet 2011 00:40
Toutes les réponses
-
Peux tu nous donner une valeur possible de FondSource ? Il est possible aussi que ca plante au démarrage car FondSource == null ?
S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue -
Bon sans voir le code, je peux déjà affirmer un truc : on ne peut binder une ImageBrush:ImageSource, il faut que tu bindes plus haut :
avec :<controls:Panorama.Background="{Binding Source={StaticResource parametres}, Path=Test, Mode=OneWay}" > ...
public ImageBrush Test{ get { return new ImageBrush() { ImageSource = new BitmapImage() { UriSource = new Uri("/ApplicationIcon.png", UriKind.Relative) } }; } }
voila !
S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue- Marqué comme réponse Neo33ASM jeudi 28 juillet 2011 23:39
-
et si tu veux garder ta string :
<controls:Panorama.Background="{Binding Source={StaticResource parametres}, Path=BackgroundImage, Mode=OneWay}" >
avec :
public ImageBrush BackgroundImage{ get { return new ImageBrush() { ImageSource = new BitmapImage() { UriSource = new Uri(FondSource, UriKind.Relative) } }; } }
en pensant à faire un PropertyChanged de "BackgroundImage" dans ta propriété FondSource
S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue- Marqué comme réponse Neo33ASM jeudi 28 juillet 2011 23:39
-
-
derniere solution, le converter :
public class StringToImageBrushConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return new ImageBrush() { ImageSource = new BitmapImage() { UriSource = new Uri(value as string, UriKind.Relative) } }; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return DependencyProperty.UnsetValue; } }
avec<controls:Panorama Background="{Binding Source={StaticResource parametres}, Path=FondSource, Converter={StaticResource StringToImageBrushConverter},Mode=OneWay}" >
il faudra juste penser a déclarer le converter dans le App.xaml
S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue- Marqué comme réponse Neo33ASM vendredi 29 juillet 2011 00:40