2010-06-29 7 views
6

Ich erstelle ein HUD-Fenster zur Untersuchung von Biz-Objekten in meiner WinForms-Anwendung.So fügen Sie ein WPF-Fenster zu einer WinForms-App hinzu

Ich wollte eine völlig andere Art von Fenster haben (minimieren Sie den Inhaltsbereich und zeigen nur die Titelbar, keine Systemschaltflächen, etc.), also habe ich eine WPF-Anwendung dafür erstellt.

Das Problem ist, dass ich möchte, dass dieses Fenster in meiner WinForms-Anwendung "lebt". Ich kann das WPF nicht einfach als OwnedForm hinzufügen oder das Hauptformular als Eigentümer des WPF-Fensters festlegen.

Also, wie kann ich das erreichen?

EDIT: Dank pst fand ich die Antwort. Hier ist das Snippet:

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

Antwort

5

Ein WPF-Fenster hat ein Win32-Fenster-Handle/Kontext.

Siehe WindowInteropHelper. Sie können dies mit Win32 verwenden (oder vielleicht gibt es WinForms-Unterstützung?), Um das Besitzerfenster des WPF-Fensters festzulegen. Beachten Sie, dass das Handle nicht vor dem Ereignis "Quelle initialisiert" (?) Existiert.

Mit nur WinForms können Sie jedoch möglicherweise die Titelleiste so viel wie Sie benötigen anpassen (Sie können die Zeichnung selbst über Win32 überschreiben, und ich denke, Sie verlieren alle Kontrollkästchen, ohne so weit zu gehen).

Es gibt viele Google-Ergebnisse zu diesem Thema, wenn Sie die richtigen Schlüsselwörter verwenden.

+2

Der WindowInteropHelper hat gut funktioniert! Es scheint, dass ich nicht die richtigen Keywords verwendet habe, ich habe den ganzen Tag dafür gesucht. Danke nochmal! – jpsstavares

Verwandte Themen