我想从
Windows窗体应用程序(.NET 3.5)显示一个WPF窗口.
这个代码似乎在一个示例项目中没有任何问题:
public partial class WinFormsForm1 : Form { public WinFormsForm1() { InitializeComponent(); } private void button1_Click(object sender,EventArgs e) { WpfWindow1 w = new WpfWindow1(); w.Show(); } }
该表格从Main()作为正常的Winforms窗体启动:
Application.Run(new WinFormsForm1());
这似乎对我来说太容易成为现实.这有什么缺点吗?这是安全吗?
解决方法
它有一个严重的缺点:无模式WPF窗口将为
not get keyboard input.
在显示WPF窗口之前,需要添加EnableModelessKeyboardInterop方法调用:
WpfWindow1 w = new WpfWindow1(); System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(w); w.Show();
ElementHost resides in WindowsFormsIntegration.dll.