Ajouter une image dans un bouton WPF

J’ai essayé cette solution:

 

Mais je ne peux voir l’image que dans la fenêtre du projet et quand je lance le programme, elle disparaît.

Si j’essaye ceci:

  Image img = new Image(); img.Source = new BitmapImage(new Uri("foo.png")); StackPanel stackPnl = new StackPanel(); stackPnl.Orientation = Orientation.Horizontal; stackPnl.Margin = new Thickness(10); stackPnl.Children.Add(img); Button btn = new Button(); btn.Content = stackPnl; 

Je reçois une exception “‘System.Windows.Markup.XamlParseException’ dans PresentationFramework.dll”.

Quelle est la solution?

Dans le cas d’une image «manquante», il y a plusieurs choses à considérer:

  1. Lorsque XAML ne parvient pas à localiser une ressource, il peut l’ignorer (lorsqu’il ne lance pas une XamlParseException )

  2. La ressource doit être correctement ajoutée et définie:

    • Assurez-vous qu’il existe dans votre projet là où il est prévu.

    • Assurez-vous qu’il est construit avec votre projet en tant que ressource.

      (Clic droit → Propriétés → BuildAction = ‘Resource’)

Fragment

Une autre chose à essayer dans des cas similaires, qui est également utile pour réutiliser l’image (ou toute autre ressource):

Définissez votre image en tant que ressource dans votre XAML:

    

Et plus tard, utilisez-le dans vos contrôles souhaités:

  

Veuillez essayer l’extrait de code XAML ci-dessous:

  

Dans XAML, les éléments sont dans une arborescence. Vous devez donc append le contrôle enfant à son contrôle parent. L’extrait de code ci-dessous fonctionne également correctement. Donnez un nom à votre grid racine XAML en tant que “MainGrid”.

 Image img = new Image(); img.Source = new BitmapImage(new Uri(@"foo.png")); StackPanel stackPnl = new StackPanel(); stackPnl.Orientation = Orientation.Horizontal; stackPnl.Margin = new Thickness(10); stackPnl.Children.Add(img); Button btn = new Button(); btn.Content = stackPnl; MainGrid.Children.Add(btn); 

Utilisation:

  

Ça devrait marcher. Mais rappelez-vous que vous devez avoir une image ajoutée à la ressource sur votre projet!

Vous pouvez définir l’arrière-plan du bouton sur l’image si vous souhaitez ensuite superposer du texte.

  

Surveillez la syntaxe de la source d’image. Voir cette question pour de l’aide.

Essayez ContentTemplate:

  

J’ai aussi eu le même problème. Je l’ai corrigé en utilisant le code suivant.

   

Remarque: Assurez-vous que l’action de construction de l’image dans la fenêtre de propriétés doit être Resource .

entrer la description de l'image ici

J’ai trouvé que je devais également définir le modificateur d’access dans l’onglet Ressources sur «Public» – par défaut, il était défini sur Interne et mon icône n’apparaissait qu’en mode Création, mais pas lorsque je exécutais l’application.