web-dev-qa-db-fra.com

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

Il est possible de définir une icône afin qu'elle soit utilisée sur chaque fenêtre de l'application actuelle. Alors que je l'ai réglé une fois (pas sur chaque fenêtre à la main) ..?

53
vts123

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

Une fenêtre WPF affiche toujours une icône. Lorsqu'une n'est pas fournie en définissant Icon, WPF choisit une icône à afficher en fonction des règles suivantes:

  1. Utilisez l'icône Assemblage, si spécifiée.

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

Référence du contenu de la communauté:

"Un petit conseil: si vous définissez l'icône de l'application et que vous vous attendez à la voir dans la fenêtre - elle n'apparaîtra pas si elle est exécutée en débogage à partir de VS. Exécution externe ou sans attachement (ctrl + f5), l'icône s'affiche comme prévu."

94
jsmith

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

17
John Myczek

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éboguer 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 des icônes devient confus par le processus d'hébergement et recherche dans "someapplication.vshost.exe" au lieu de "someapplication.exe" pour les icônes.

Il semble que ce problème soit résolu dans VS2013.

1
DaveCleland

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 à l'aide de vshost.exe et que le manifeste n'est donc 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.

1
Frosty

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);
        }
1
Nadeem Shaikh