以Win Form

时间:2017-03-15 20:14:59

标签: c# wpf winforms integration key-bindings

我们有一个WPF组件(用户控件),它通过ElementHost托管在Win Form中。 WPF组件通过

定义为ElementHost的子项

ElementHostControl.Child = wpfFrame

我们想要从Win Form传递到WPF表单的某些键绑定。我们通过KeyBinding()这样做。然后我们将键绑定分配给 WPFFrame.InputBindings.add(curBinding);

虽然我没有对所有这些组合进行测试,但它与大多数组合都很合适。但Ctrl + B,Shift + P等似乎一切正常。

但是我尝试Shift +(左箭头键),它不起作用。有趣的是,当我在独立的WPF应用程序中尝试它然后按预期执行工作。

我确保数据流经完全相同的代码,但为什么Shift + P工作而Shift +< - 不工作?现在我在执行的WPF Commend中设置一个断点并从Win Form运行它。我使用键绑定来触发另一个命令,然后使用Ctrl +< - 来触发它实际上“有时”工作的有问题的命令。如果我删除断点并执行Ctrl +< - 那么它永远不会触发相关命令。

我怀疑这是WPF和Win表单之间的集成问题,因为Shift +< - 在WPF本身中起作用。

任何输入都表示赞赏。

1 个答案:

答案 0 :(得分:0)

这确实是一个焦点问题。设置一个断点和这一行: var v = Keyboard.FocusedElement;

在运行时显示焦点被各种元素窃取。我需要亲自挑选几个并设置 调焦=“假” 在XAML中。问题已解决!