2010-12-01 38 views
1

J'utilise le WPF NotifyIcon from Philipp Sumi. Il a la possibilité d'utiliser un UserControl WPF en tant que popup dans votre icône de la barre d'état. Cela fonctionne très bien, mais dans une situation, j'ai une autre popup d'une autre application qui est affichée en haut de mon popup. Je veux que mon popup soit toujours au top.UserControl toujours au-dessus (le plus haut, XAML/WPF)

Cela peut-il être fait? Donc peut influencer l'ordre z d'un UserControl?

Edition - réaction aux commentaires: Je me rends compte à ma question semble stupide, parce que l'autre application trouve ses informations tout aussi important, et pense qu'il devrait être sur le dessus. Dans mon cas, ce n'est pas la situation. Je me connecte à une application externe. Le but de cette application est de charger des données à partir d'un périphérique externe. Lorsque cette application a terminé, il est dit "chargement terminé" dans un popup. Ensuite, mon application traite les données. Lorsque mon application termine le traitement (presque immédiatement), elle affiche une boîte: "Traitement terminé, cliquez ici pour afficher les données". Donc: dans mon cas spécifique les informations de mon popup sont plus utiles à l'utilisateur, car il contient un bouton qu'il doit cliquer. Les deux popups "parlent" des mêmes données. Je comprends que cela peut soulever plus de commentaires comme: "Pourquoi utiliser un popup?". S'il vous plaît se concentrer sur une réponse à la question, pas de solutions alternatives.

+1

chaque développeur est convaincu que leur pop-up est le plus importatnt =) –

+5

Que se passe lorsque l'autre application utilise la même méthode pour être au top de votre popup? – TheFogger

+0

Merci pour vos commentaires. J'ai édité mon post et clarifié ma situation –

Répondre

1

bien, il n'y a pas une telle MakeMyThingSuperTopMost() thinggy, vous devriez read here pourquoi.

+0

Je ne demande pas SuperTopMost. Je demande TopMost. C'est juste pour gérer un cas très spécifique avec exactement 1 autre application. –

1

Vous pouvez essayer de rendre l'autre popup "pas topmost" et ensuite montrer votre popup. Vous devrez trouver l'autre popup soit en énumérant toutes les fenêtres ouvertes avec la fonction EnumWindows api, puis en supprimant son statut le plus haut avec SetWindowsPos. Mais c'est certainement un truc sale et fragile (si vous pouvez le faire fonctionner du tout).

http://pinvoke.net/default.aspx/user32.EnumWindows http://pinvoke.net/default.aspx/user32/SetWindowPos.html