2017-03-15 78 views
0

我们有一个通过ElementHost托管在Win Form中的WPF组件(用户控件)。 WPF的组件通过在Win Form中托管WPF时的键绑定问题

ElementHostControl.Child = wpfFrame

定义为ElementHost的的孩子有,我们想从赢到表格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中工作。

任何输入赞赏。

+0

这可能是一个焦点问题。如果键盘焦点不在WPF元素上,那么它可能不会收到关键事件。您可能需要使用WPF元素上的'RaiseEvent'来转发关键事件:http://stackoverflow.com/a/1646568/476048 –

回答

0

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

在运行时显示焦点被各种元素窃取。我需要选择其中的几个,并在XAML中设置 Focusable =“False” 。问题修复!