2009-04-21 6 views
6

Je dois changer dynamiquement l'image d'arrière-plan appliquée à l'un de mes boutons, mais je n'arrive pas à comprendre comment. Les images sont ajoutées au projet et leur action de construction est définie sur Ressource. J'ai essayé le suivi:Utilisation d'une image de ressource dans le code derrière

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("/Images/InchDOWN.png",UriKind.Relative))); 

Cette compile avec succès, mais se bloque avec une DirectoryNotFoundException disant « Impossible de trouver une partie du chemin « C: \ Images \ InchDOWN.png ». »

Je ne souhaite pas que l'application recherche l'image sur le disque. Comment puis-je utiliser l'image en tant que ressource intégrée? Je pense que cela implique de changer l'action de construction en ressource intégrée, mais comment puis-je utiliser cette ressource dans le code derrière?

Répondre

8

Vous devez générer l'image en tant que ressource NOT une ressource incorporée. La ressource est spécifiquement destinée à être utilisée par les projets WPF.

Pour l'utiliser dans le code de procédure:

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/InchDOWN.png"))); 

C'est beaucoup plus facile à faire en XAML que je recommande.

Modifier

J'ai oublié une barre oblique avant Images, qui pourrait être le problème. Voici un MSDN article about pack Uris si vous avez besoin de plus d'informations. Peut-être que vous devriez poser une question indiquant exactement ce que vous essayez d'accomplir et, espérons-le, découvrir différentes approches à votre problème de bouton à états multiples.

+0

J'ai essayé ceci et j'ai reçu une exception NotSupportedException disant "Le préfixe d'URI n'est pas reconnu." Je suis d'accord, définir l'image serait plus facile en XAML, mais mon objectif est une sorte de bouton multi-état et je ne sais pas comment le faire en XAML. –

Questions connexes