2011-10-19 11 views

Respuesta

6

Considere pasar el parámetro al método ShowDialog en lugar de usar la propiedad Parent.

Puede escribir clase de ayuda

class Wpf32Window : IWin32Window 
{ 
    public IntPtr Handle { get; private set; } 

    public Wpf32Window(Window wpfWindow) 
    { 
    Handle = new WindowInteropHelper(wpfWindow).Handle; 
    } 
} 

public static class WindowExtensions 
{ 
    public static IWin32Window GetWin32Window (this Window parent) 
    { 
    return new Wpf32Window(parent); 
    } 
} 

Después de eso sólo se puede escribir

winFormsWindow.Show(yourWpfWindow.GetWin32Window()); 
+0

El 'propiedad en asa de los objetos creados es nulo. ¿Sabes por qué? –

+0

¿Ya se creó su ventana wpf? Intente usar este código cuando la ventana ya esté cargada. No tuve este problema en mi caso. Es probable que este artículo será útil http://social.msdn.microsoft.com/Forums/ar/wpf/thread/5f89ac58-d2ef-4ac0-aefb-b2826dbef48a – nevermind

+0

Esto no parece funcionar correctamente - la nueva 'Nunca Wpf32Window' se libera, e incluso después de que finaliza el programa, el proceso original permanece porque esa nueva ventana nunca fue desasignada correctamente. – Conrad

2

Ponga un WindowsFormsHost en su ventana WPF, que contiene un control de usuario de Windows Forms que sirve como padre para su diálogo.

Cuestiones relacionadas