【问题标题】:Create a simple, unmodified key binding in WPF在 WPF 中创建一个简单的、未修改的键绑定
【发布时间】:2011-11-24 00:51:42
【问题描述】:

我正在尝试创建一个非常简单的 WPF 应用程序。我想在用户按下“H”(不是 Control-H 或 Alt-H,只是 H)时调用一个命令处理程序。如果我在代码隐藏代码中使用以下内容:

var gesture = new KeyGesture(Key.H, ModifierKeys.None);
var inputBinding = new InputBinding(MyRoutedCommand, gesture);
InputBindings.Add(inputBinding);

我立即收到一个异常,说 KeyGesture 不支持键和修饰符组合。

(如果我创建 XAML 来做类似的事情,我会得到同样的例外)。

我的应用程序不接受键入的输入,应用程序中没有文本框,因此与文本并没有真正的冲突(至少在我看来)。我不会想到这会如此不寻常。

我在其他地方看到过 cmets 建议我可以为此创建自定义控件或拦截低级别的键盘按下,但这些似乎有很多开销。有更简单的想法吗?

【问题讨论】:

    标签: .net wpf keyboard-shortcuts keyboard-events


    【解决方案1】:

    不要使用KeyGesture 类型或属性(因为一个键不是手势)。

    例如

    KeyBinding b = new KeyBinding()
        {
            Command = MyRoutedCommand,
            Key = Key.H
        };
    InputBindings.Add(b);
    

    XAML 也是如此

    <KeyBinding Command="{Binding MyRoutedCommand}" Key="H" />
    

    【讨论】:

    • 这对我根本不起作用。它仍然给出同样的错误。
    • @Daniel:使用旧的 .NET 版本可能吗?
    • @H.B.:我正在使用 .NET Framework 4.0 并使用 Visual Studio 2010 进行编译。我最终只是在窗口中添加了一个 KeyDown 事件并检查按下的特定键。
    • 这也不起作用,因为键+修饰符验证也被触发了。
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多