Salut,
Je fais une appli WPF, donc avec des fenêtres en XAML. J'aimerais savoir s'il est possible d'utiliser dans le code XAML des resources de l'application, déclarées dans Resources.resx. Quelque chose comme ça :
Malheureusement il semblerait que ce ne soit pas prévu... logique d'ailleurs, les resources déclarées dans le .resx sont des System.Drawing.Bitmap, et WPF utilise des System.Windows.Media.ImageSource. J'ai trouvé un article qui explique comment faire la conversion entre les deux, j'ai donc créé une méthode qui obtient un objet ImageSource à partir de l'identifiant de l'image dans la resource :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4... <Image Source="{StaticResource monImage}"/> ...
Seulement voilà, j'aimerais bien ne pas être obligé de passer par le code C# pour indiquer la propriété Source d'une image XAML, c'est quand même un peu contraire au concept de séparation du design et du code... Je sais qu'il est possible de faire un Binding vers une méthode en utilisant un ObjectDataSource, mais j'ai pas trop compris comment ça marche. J'aimerais bien pouvoir faire quelque chose dans ce gout là :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class ResourceHelper { public static ImageSource GetImageSource(string resourceKey) { Bitmap bmp = Properties.Resources.ResourceManager.GetObject(resourceKey) as Bitmap; Int32Rect rect = new Int32Rect(0, 0, bmp.Width, bmp.Height); BitmapSource src = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, rect, BitmapSizeOptions.FromEmptyOptions()); return src; } }
J'ai cherché sur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4... <Image Source="{x:JeSaisPasQuoi ResourceHelper.GetImageSource('monImage')"/> ...
, mais j'ai rien trouvé... Est-ce que vous auriez une idée ?
Partager