2011-10-19 18 views

risposta

6

Considerare di passare il parametro al metodo ShowDialog anziché utilizzare la proprietà Parent.

È possibile scrivere classe di supporto

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); 
    } 
} 

Dopo di che si può semplicemente scrivere

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

La proprietà 'ansa di degli oggetti creati è nullo. Sai perché? –

+0

La tua finestra wpf è già stata creata? Prova a usare questo codice quando la finestra è già caricata. Non avevo questo problema nel mio caso. Probabilmente questo articolo sarà utile http://social.msdn.microsoft.com/Forums/ar/wpf/thread/5f89ac58-d2ef-4ac0-aefb-b2826dbef48a – nevermind

+0

Questo non sembra funzionare correttamente - la 'nuova Wpf32Window' mai viene rilasciato e anche dopo la fine del programma, il processo originale rimane perché la nuova finestra non è mai stata correttamente rilasciata. – Conrad

2

Inserire un WindowsFormsHost nella finestra WPF, contenente un controllo utente di Windows Form che funge da elemento principale della finestra di dialogo.

Problemi correlati