Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以Win格式托管WPF时的关键绑定问题_C#_Wpf_Winforms_Integration_Key Bindings - Fatal编程技术网

C# 以Win格式托管WPF时的关键绑定问题

C# 以Win格式托管WPF时的关键绑定问题,c#,wpf,winforms,integration,key-bindings,C#,Wpf,Winforms,Integration,Key Bindings,我们有一个WPF组件(用户控件),它通过ElementHost以Win形式托管。WPF组件通过定义为ElementHost的子级 ElementHostControl.Child=wpfFrame 我们希望将某些键绑定从Win表单传递到WPF表单。我们是通过KeyBinding()实现的。然后我们将keybinding分配给 WPFFrame.InputBindings.add(限制绑定) 虽然我没有测试所有的组合键,但大多数组合键都可以使用。但Ctrl+B、Shift+P等操作似乎都可以正常工

我们有一个WPF组件(用户控件),它通过ElementHost以Win形式托管。WPF组件通过定义为ElementHost的子级

ElementHostControl.Child=wpfFrame

我们希望将某些键绑定从Win表单传递到WPF表单。我们是通过KeyBinding()实现的。然后我们将keybinding分配给 WPFFrame.InputBindings.add(限制绑定)

虽然我没有测试所有的组合键,但大多数组合键都可以使用。但Ctrl+B、Shift+P等操作似乎都可以正常工作

但我尝试Shift+(左箭头键),它不工作。有趣的是,当我在独立的WPF应用程序中尝试它时,它就像预期的那样工作


我确保数据流通过完全相同的代码,但为什么Shift+p工作而Shift+这确实是一个焦点问题。设置断点和此线: var v=键盘.FocusedElement

运行时显示焦点被各种元素窃取。我需要亲自挑选两个,然后设置 Focusable=“False”
在XAML中。问题解决了

这可能是一个焦点问题。如果键盘焦点不在WPF元素上,那么它可能不会接收按键事件。您可能需要使用WPF元素上的
RaiseEvent
转发密钥事件: