我正在使用Windows 8开发一个WPF应用程序作为.NET 4.5的开发人员机器。我也使用了一些DevExpress控件。
在开发人员计算机上,应用程序的UI响应正常。
当我在Windows 7上测试应用程序时,无论是使用虚拟机还是其他PC,都显示了UI,但它没有正常响应。例如,我有一个DevExpress网格控件,当我点击一行时,行没有突出显示为选中,当鼠标悬停按钮和菜单时,也没有任何反应。
当我按下CTRL键时,魔法开始了! 之后,WPF应用程序正常响应,就像在Windows 8上一样。
我想当我按下那个键时,会发生与Focus有关的事情。 此外,当窗口调整大小时,网格上的更改会出现,但在它再次'冻结'之后。只有按下CTRL,问题才会消失。
为什么会发生这种情况?
非常感谢
答案 0 :(得分:0)
这是从WinForms应用程序创建WPF窗口时的标准行为。幸运的是,Interop软件包还包括一种解决这种奇怪问题的方法:ElementHost.EnableModelessKeyboardInterop
。在创建WPF窗口之后,但在调用其Show方法之前,请执行以下操作:
public static void SetOwnerAndMakeTheKeyboardWork(this Window window, IntPtr ownerHandle)
{
if (ownerHandle != IntPtr.Zero)
new WindowInteropHelper(window).Owner = ownerHandle;
ElementHost.EnableModelessKeyboardInterop(window);
}