2009-09-07 12 views
6

ist es möglich, ein modales Fenster von einem WPF-Benutzersteuerelement anzuzeigen, das ein untergeordnetes Element eines ElementsHost ist, und den Eigentümer/Eltern des modalen Fensters auf das enthaltene Formularsteuerelement festzulegen?WPF ShowDialog und ElementHost

Ich denke, Sie können dies nicht tun, da die Owner-Eigenschaft eine Instanz von Window übernimmt, wo ich es als Eltern des Element-Host-Steuerelements festlegen möchte, das ein altes Windows Forms Form-Steuerelement ist. Ich frage mich nur, ob es eine Arbeit oder einen alternativen Ansatz gibt.

Das Problem ist, wenn das modale Fenster angezeigt wird und der Benutzer zu einer anderen Anwendung wechselt, und dann wieder zurück, ist das modale Fenster ausgeblendet und der Benutzer kann nicht mit dem Hauptfenster interagieren. Dies liegt daran, dass Windows denkt, dass das Modal Window weiterhin angezeigt wird, wenn dies nicht der Fall ist, da keine Owner/Parent-Beziehung festgelegt ist.

Prost, James.

Antwort

8

Ich WindowInteropHelper mit diesem Problem so zu lösen:

var wpfDialog = new MyWpfDialog(); 
var interopHelper = new WindowInteropHelper(wpfDialog) 
     { 
      Owner = winFormsDialog.Handle 
     }; 

wpfDialog.ShowDialog(); 
+0

Hallo, vielen Dank. Mein Problem gelöst. – ayc

4

Ich weiß, dass dieser Beitrag ist alt, aber ich stieß auf eine Art und Weise das winform Fenster zu finden, die das Hosting ist ElementHost aus dem Kontext eines wpf-Benutzersteuerelements, in dem Sie möglicherweise keinen Zugriff auf das winform-Fenster haben. Ich fand das nützlich, damit ich das Host-Fenster nicht passieren muss.


HwndSource winformWindow = (System.Windows.Interop.HwndSource.FromDependencyObject(wpfControlInElementHost) as System.Windows.Interop.HwndSource); 
if (winformWindow != null) 
{ 
    var interopHelper = new WindowInteropHelper(wpfWindow) 
    { 
     Owner = winformWindow.Handle 
    }; 
} 
Verwandte Themen