Puis-je superposition d'une fenêtre WPF sur le dessus de l'autre?
J'ai une fenêtre WPF, qui contient un WindowsFormsHost
élément. J'ai besoin de dessiner des choses sur le dessus de cet élément, mais la nature de WindowsFormsHost
signifie qu'il est toujours sur la partie supérieure du dessin pile. Comme je ne dessine pas de la même fenêtre WPF sur le dessus de la WindowsFormsHost
composant, puis-je recouvrir une autre fenêtre sur le dessus de celui-ci?
J'ai essayé ce de manière rudimentaire, mais j'ai quelques problèmes:
1) je ne peux pas arrêter de windows à partir d'autres applications en passant entre la fenêtre principale et la fenêtre superposée.
2) Lorsque j'Alt-Tab, la superposition de la fenêtre s'affiche dans la fenêtre de liste, ce qui est assez laid.
Essentiellement, j'ai besoin de la notion de "fenêtre enfant", et la fenêtre qui, à tous égards, apparaît comme une partie d'une autre fenêtre. UserControls de ne pas travailler pour moi, comme le WindowsFormsHost
sera toujours tirer dessus.
Des Idées?
Mise à jour [23 Mai '11 à 10:13 ]
Merci à vous deux pour les réponses.
J'ai essayé de la ChildWindow
approche, et la WindowsFormsHost
élément attire toujours sur le dessus. Si je comprends bien, seule une véritable fenêtre peut dessiner sur un WindowsFormsHost
, quoi que ce soit dans la même fenêtre va passer sous le WindowsFormsHost
.
Un élément avec le WindowsFormsHost
va encore tirer sous un WinForms composant, ils sont toujours tiré sur le dessus, et qui semble non négociable...
Je crois que je suis à la recherche d'un moyen pour ancrer une fenêtre externe pour agir en tant que partie de la fenêtre principale. Sur le Mac, il y a le concept d'un véritable "enfant de la fenêtre", je suis à la recherche de quelque chose comme ça.
- Sans WinAPI et les bibliothèques de Tiers stackoverflow.com/a/23662410/3302804
Vous devez vous connecter pour publier un commentaire.
Après beaucoup de tests de différentes solutions:
Pour:
Inconvénients:
Pour:
Inconvénients:
Pour:
Inconvénients:
Pour moi, la meilleure solution était d'utiliser Microsoft.DwayneNeed. (Je l'ai utilisé pour obtenir CefSharp-Winforms en WPF application)
Parce que geting à travailler n'est pas droit devant elle, c'est un petit tutoriel:
à votre Fenêtre.
à votre Grille.
Exemple:
HTML:
Dans un typique MVP application à l'aide de l'accès ou de l'Événement agrégateur, vous devrez créer une autre fenêtre et le nom de ce pop-up ou enfant (
ChildWindow.XAML
) et ont une méthode d'obtenir dans (ChildWindow.XAML.CS
) commeOnt une propriété dans le maniwindow qui peuvent retourner Childwindow type en cas de besoin.
comme
Espère que cette aide,
Vous pourriez faire de la "superposition" dans le cadre de la
WindowsFormsHost
. De sorte que l'on pourrait avoir un élément enfant qui doit être au-dessus de tout autre contenu dans les hébergé élément.Je suggérerais à l'aide de la MahApps bibliothèque.
J'ai été aux prises avec ce problème et trouvé la MahApps bibliothèque résolu le problème de l'espace aérien, sans aucune configuration de ma part. Pour plus d'informations, voir leur FAQ sur ce:
https://github.com/MahApps/MahApps.Metro/wiki/FAQ#1-why-is-so-and-so-winforms-control-invisible-or-not-rendering-why-is-the-webbrowser-or-other-control-covering-my-flyout-or-another-control-airspace