chi lavora con WPF sicuramente si è accorto che è possibile inserire un custom control progettato con WPF all'interno di una applicazione Windows Forms e viceversa.
Ma come fare se da un'applicazione Windows Forms voglio richiamare una Window progettata in WPF e non un UserControl ?
Be', la risposta a prima vista è abbastanza semplice: E' sufficiente referenziare i progetti, instanziare l'oggetto Window che vogliamo visualizzare e poi facciamo un bel Show()
Tutto funziona correttamente fino a quando non dovete utilizzare la tastiera. Vi accorgerete che l'input da tastiera è disabilitato per la finestra WPF.
La spiegazione di questo comportamento bizzarro è che gli eventi di tastiera vengono notificati solo all'applicazione principale (quella Windows Forms)
che non sa come notificare l'evento di tastiera a WPF perchè la struttura di oggetti è differente..
.... fortunatamente MS ha risolto questo piccolo inconveniente, attraverso lo stesso oggetto che fa hosting dei controlli....
Il componenten ElementHost infatti possiede il metodo statico ElementHost.EnableModelessKeyboardInterop( window ww)
a cui è sufficiente passare la finsetra WPF su cui abilitare gli eventi di tastiera.
E' tutto