2010-06-29 10 views
6

Je crée une fenêtre HUD pour inspecter des entités biz dans mon application WinForms. Je voulais avoir un style de fenêtre complètement différent (minimiser la zone de contenu et afficher uniquement la barre de titre, pas de boutons système, etc.), j'ai donc créé une application WPF pour cela.Comment ajouter une fenêtre WPF à une application WinForms

Le problème est que je veux que cette fenêtre "vive" dans mon application WinForms. Je ne peux pas simplement ajouter le WPF en tant que OwnedForm ou définir le formulaire principal en tant que propriétaire de la fenêtre WPF.

Alors, comment peut-on réaliser cela?

EDIT: Merci à pst j'ai trouvé la réponse. Voici l'extrait:

System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(_inspector); 
WindowInteropHelper inspectorHelper = new WindowInteropHelper(_inspector); 
inspectorHelper.Owner = this.Handle; 
_inspector.Show(); 

Répondre

5

Une fenêtre WPF a une poignée-fenêtre Win32/contexte.

Voir WindowInteropHelper. Vous pouvez l'utiliser avec Win32 (ou peut-être un support WinForms?) Pour définir la fenêtre propriétaire de la fenêtre WPF. Soyez conscient que le handle n'existe pas jusqu'à l'événement "source initialized" (?). Cependant, en utilisant uniquement WinForms, vous pouvez personnaliser autant que nécessaire la barre de titre (vous pouvez écraser le dessin lui-même via Win32, et je pense que vous perdez toutes les boîtes de contrôle sans aller aussi loin).

Il ya beaucoup de résultats google sur ce sujet si vous utilisez les bons mots-clés.

+2

Le WindowInteropHelper a bien fonctionné! Il semble que je n'ai pas utilisé les mots clés corrects, j'ai cherché toute la journée pour cela. Merci encore! – jpsstavares

Questions connexes