C# WPF中的LeftAlt键绑定

C# WPF中的LeftAlt键绑定,c#,wpf,mvvm,key-bindings,C#,Wpf,Mvvm,Key Bindings,我试图用命令绑定左ALT键,以切换WPF中菜单的可见性。 但是它不起作用。。命令没有开火 <Window.InputBindings> <KeyBinding Key="LeftAlt" Command="{Binding Path=MenuVisibilitySetCommand}"/> </Window.InputBindings> 我注意到其他特殊键,如Alt、Ctrl等。。也不在这里工作

我试图用命令绑定左ALT键,以切换WPF中菜单的可见性。 但是它不起作用。。命令没有开火

<Window.InputBindings>
        <KeyBinding
            Key="LeftAlt"
            Command="{Binding Path=MenuVisibilitySetCommand}"/>
</Window.InputBindings>
我注意到其他特殊键,如Alt、Ctrl等。。也不在这里工作


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

这些特殊键称为修改键,这应该清楚地说明为什么它不起作用。修饰符键用于修改给定键的行为,如Shift+L生成大写L,其中只有L键生成小写L。在实际逻辑中使用Modifierkeys可能会有问题且令人恼火,因为用户不习惯在按下此类按钮时看到实际操作的发生。但我同意有些地方这样做是有意义的,例如在按ALT键时突出显示菜单项

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

    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也可以启动您的命令。

这些特殊键称为修改键,这应该可以清楚地说明它不起作用的原因。修饰符键用于修改给定键的行为,如Shift+L生成大写L,其中只有L键生成小写L。在实际逻辑中使用Modifierkeys可能会有问题且令人恼火,因为用户不习惯在按下此类按钮时看到实际操作的发生。但我同意有些地方这样做是有意义的,例如在按ALT键时突出显示菜单项

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

    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也可以在这段代码中启动您的命令。

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


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