LeftAlt WPF中的键绑定

时间:2012-05-15 09:38:18

标签: c# wpf mvvm key-bindings

我尝试使用命令绑定左ALT键以切换WPF中菜单的可见性。 但它没有用。命令没有解雇..

<Window.InputBindings>
        <KeyBinding
            Key="LeftAlt"
            Command="{Binding Path=MenuVisibilitySetCommand}"/>
</Window.InputBindings>

我注意到其他特殊键(例如Alt,Ctrl等)也没有在这里工作..

如何在WPF中为特殊键进行键绑定?

2 个答案:

答案 0 :(得分:5)

要让LeftALt像这样工作,您还需要将Modifiers属性设置为Alt

<KeyBinding Key="LeftAlt" Modifiers="Alt" Command="{Binding Path=MenuVisibilitySetCommand}"/>

答案 1 :(得分:2)

这些特殊键称为修饰键,这应该清楚它为什么不起作用。修饰符键是“修改”给定键的行为,类似Shift + L使大写“L”,其中只有L键为小写“l”。将Modifierkeys用于实际逻辑可能会产生问题并且令人恼火,因为当按下这些按钮时,用户不习惯看到发生的真实动作。但是我同意有些地方有意义,例如:在按下ALT键时突出显示MenuItem。

但是对于您的实际问题:您可以使用codebehind和OnKeyDown / OnKeyUp或Preview事件来实现此行为。

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if(e.SystemKey == Key.LeftAlt)
        {
            myMenu.Visibility = Visibility.Visible;
            // e.Handled = true; You need to evaluate if you really want to mark this key as handled!
        }

        base.OnKeyDown(e);
    }

当然,cou也可以在此代码中触发您的命令。