【问题标题】:key binding issues when hosting WPF in Win Form在 Win Form 中托管 WPF 时的键绑定问题
【发布时间】:2017-08-06 18:51:35
【问题描述】:

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

定义为ElementHost的Child

ElementHostControl.Child = wpfFrame

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

虽然我没有测试所有的组合键,但大多数组合键都很好用。但 Ctrl+B、Shift+P 等似乎一切正常。

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

我确保数据流过完全相同的代码,但为什么 Shift+P 有效,而 Shift+

我怀疑这是 WPF 和 Win 表单之间的集成问题,因为 Shift+

任何意见表示赞赏。

【问题讨论】:

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

标签: c# wpf winforms integration key-bindings


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2014-06-03
    • 2011-11-03
    • 2010-12-09
    相关资源
    最近更新 更多