53 votes

Icône WPF pour toutes les fenêtres d'application

Est-il possible de définir une icône de manière à ce qu'elle soit utilisée sur chaque fenêtre de l'application en cours? Ainsi je ne devrais la définir qu'une seule fois (et pas sur chaque fenêtre manuellement)..?

94voto

jsmith Points 3536

Une bonne référence sur le sujet se trouve ici MSDN. Indique que vous avez une icône pour l'application (icône de bureau), et une pour chaque fenêtre.

Une fenêtre WPF affiche toujours une icône. Lorsqu'aucune n'est fournie en définissant Icon, WPF choisit une icône à afficher en se basant sur les règles suivantes:

  1. Utiliser l'icône de l'assembly, si spécifiée.

  2. Si l'icône de l'assembly n'est pas spécifiée, utiliser l'icône par défaut de Microsoft Windows.

Référence du contenu communautaire :

"Un petit conseil : si vous définissez l'icône de l'application et que vous vous attendez à la voir sur la fenêtre - elle ne s'affichera pas si vous exécutez en mode débogage depuis Visual Studio. En l'exécutant de manière externe ou sans attacher (ctrl + f5), l'icône s'affiche comme prévu."

17voto

John Myczek Points 6205

Définissez l'icône dans les propriétés du projet sur l'onglet "Application" dans la section "Ressources". Cet icône sera l'icône par défaut pour toutes les fenêtres de l'application.

1voto

RemAngel Points 11

Sous VS2010, ouvrez les propriétés de l'exécutable de l'application principale et ouvrez l'onglet Application. Définissez l'icône sous 'Icône et Manifeste' dans la section Ressources.

Pour voir l'icône lors du débogage sous VS2010, vous devez ouvrir l'onglet Débogage et décocher l'option 'Activer le processus d'hébergement Visual Studio', sinon vous ne verrez que l'icône par défaut sur la plupart des fenêtres.

Je suppose que le code de chargement de l'icône est confondu par le processus d'hébergement et recherche dans "someapplication.vshost.exe" au lieu de "someapplication.exe" pour les icônes.

Cela semble avoir été corrigé dans VS2013.

1voto

Frosty Points 291

La raison pour laquelle "Activer le processus d'hébergement Visual Studio" fait que l'icône ne fonctionne pas est qu'elle est démarrée en utilisant le vshost.exe, et donc le manifeste n'est pas lu correctement. Il en va de même si vous avez d'autres éléments dans le manifeste, comme des contrôles ocx regfree, etc., qui nécessitent le chargement du manifeste.

1voto

Nadeem Shaikh Points 87

Vous pouvez également essayer ceci pour définir votre propre icône :

private void Page_Loaded_1(object sender, RoutedEventArgs e)
        {
            Uri iconUri = new Uri(@"C:\Apps\R&D\WPFNavigation\WPFNavigation\Images\airport.ico", UriKind.RelativeOrAbsolute);
            (this.Parent as Window).Icon = BitmapFrame.Create(iconUri);
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X