Masquer l'icône d'une fenêtre WPF
Je sais qu'il ya beaucoup de questions à propos de la dissimulation ou de la suppression de l'icône dans le coin supérieur gauche d'une fenêtre WPF, l'endroit où le système de menu est. J'ai essayé beaucoup d'entre eux, mais aucun ne fonctionne. Voici mes besoins:
- L'icône disparaît et ne prend pas d'espace vide (j'. e. aucune icône transparente)
- Le titre de la fenêtre démarre directement sur le bord gauche de la fenêtre
- Le bouton fermer dans le coin supérieur droit est toujours là et travaille
- Minimiser/maximiser les boutons sont toujours là si activé (en option, n'est-ce pas tester ce)
- Pas coutume-le dessin de l'ensemble du cadre de la fenêtre
- Fonctionne sur Windows 7 avec Aero Glass est activé (Windows 8 n'importe qui?)
- Fonctionne sur Windows 32 et 64 bits (x86 et x64)
- Fonctionne avec WPF .NET 4.0
- Fonctionne lorsqu'il n'est pas dans un débogueur, tels que Visual Studio (ce serait bien si elle travaille également dans le débogueur)
- Devrait également fonctionner sur Windows XP (facultatif)
Disponibles réponses fondamentalement utiliser les fonctions de l'API Windows GetWindowLong
, SetWindowLong
et parfois aussi SetWindowPos
pour ajouter de la fenêtre étendue de style WS_EX_DLGMODALFRAME
et appel SWP_FRAMECHANGED
. Parfois, d'autres styles sont également définis ou indéfinis.
Malheureusement, rien de tout cela fonctionne à tous. Je peux soit n'ont pas d'icône avec aucun bouton fermer, ou les deux, sont toujours là. Mais il est également à remarquer que l'ensemble de ce contenu à partir de 2010 ou plus tôt. Il semble qu'il est ciblé au plus tôt .NET ou les versions de Windows et ne parvient pas depuis.
J'ai déjà comparé les styles de fenêtre de dialogues de système (à partir de l'Explorateur) et mon WPF, windows avec Microsoft Spy++ (inclus dans Visual Studio). Mais je peux essayer de mettre tous les drapeaux de même, l'icône ne s'en ira pas. C'est comme de la magie noire qui l'emporte sur tous les autres la fonction de l'API ou de la physique.
Quelqu'un a une solution qui fonctionne encore aujourd'hui et de l'environnement?
OriginalL'auteur ygoe | 2013-09-02
Vous devez vous connecter pour publier un commentaire.
Le ci-dessus ne fonctionne pas, lors de la création d'une fenêtre de boîte de dialogue à partir d'une application WPF avoir une icône.
Toutefois, lorsque vous ajoutez les deux lignes suivantes, l'correctement l'icône disparaît de la fenêtre de dialogue:
(s).un. https://connect.microsoft.com/VisualStudio/feedback/details/745230/wpf-window-cannot-be-displayed-without-titlebar-icon)
Lorsque utilisé dans un MPF système de projet, le code ci-dessus retiré le processus par défaut de l'icône (VS2013) mais a laissé une icône générique à sa place
Merci beaucoup! J'ai eu le problème, que l'icône a été correctement supprimée lors du démarrage de l'application avec le débogueur, mais pas lors du démarrage d'un communiqué de construire sans débogueur. Votre solution a résolu ce problème!
OriginalL'auteur o-toole-kit
Si vous venez de mettre les mots dans votre titre dans un moteur de recherche au lieu de cela, comme je viens de le faire, alors vous avez trouvé beaucoup plus de résultats que ces. Vous pouvez trouver votre réponse dans la suite de:
Suppression de l'Icône à partir d'une fenêtre WPF
Est-il possible d'afficher une fenêtre wpf sans une icône dans la barre de titre?
Comment faire pour supprimer l'icône d'une fenêtre WPF
Comment faire pour supprimer l'Icône de barre de titre de la fenêtre
Comment faire pour masquer l'icône de la fenêtre dans WPF
Votre dernier commentaire à propos de ce pas travailler sur des applications à grande échelle à me demander. En tant que tel, j'ai ensuite ajouté du code pour une application à grande échelle et une fois de plus, il a très bien fonctionné. Cependant, j'ai continué à tester cela et vous doit être l'aide d'un
RibbonWindow
dans votre application, parce que quand j'ai testé ce code sur une grande échelle avec unRibbonWindow
le code n'a pas travail.Si vous utilisez un normal
Window
puis donner ce code à un essai (à Partir de @MichalCiechan, la réponse à la première liés post):D'abord ajouter cette classe:
Puis l'ajouter à
MainWindow.xaml.cs
:Oh... et une autre chose à noter... ça ne marchera pas si vous avez réglé la
Window.Icon
bien, mais je devine que vous n'avez pas fait que si vous ne voulez pas une icône apparaisse.J'ai mis à jour mon post pour vous avec la preuve d'un exemple de travail que j'ai testé... peut-être que vous pouvez revenir sur cette impoli commentaire gauche et retirez la imméritée downvote maintenant?
Merci @RotsiserMho, je vais mettre à jour ma réponse pour refléter cela.
J'ai trouvé une différence: dès Que mon .exe fichier contient une ressource d'icône, l'icône sera utilisée dans la fenêtre. Si je laisse le projet de création de "l'icône par défaut" et de ne pas ajouter d'autres non géré les icônes à mon .exe fichier, puis il travaille. Mais dès que une seule icône est là, elle est affichée.
vous venez de mettre les mots dans votre titre dans un moteur de recherche au lieu de cela, comme je viens de le faire, alors vous avez trouvé beaucoup plus de résultats que ceux-ci." - mais probablement utile à l'époque, je pense qu'il n'est plus pertinente. Ma recherche avec Google avec la phrase " "masquer l'icône de fenêtre wpf" premier match atterri ici. Envisagez de supprimer première phrase.
OriginalL'auteur Sheridan
C'est ce qui m'est venu après avoir vu les différentes solutions à cette question:
Exemple:
OriginalL'auteur ub3rst4r