1

WPFのメニューの表示を切り替えるコマンドで左ALTキーをバインドしようとしています。しかし、それは機能しません..コマンドが起動していません..

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

他の特別なキー(Alt、Ctrlなど)もここでは機能しないことに気づきました。

WPFで特別なキーのKeyBindingを行う方法は?

4

2 に答える 2

6

ModifiersLeftALtをこのように機能させるには、プロパティをに設定する必要もありますAlt

<KeyBinding Key="LeftAlt" Modifiers="Alt" Command="{Binding Path=MenuVisibilitySetCommand}"/>
于 2012-06-18T12:22:30.337 に答える
3

これらの特別なキーは修飾キーと呼ばれ、これにより、なぜ機能しないのかが明確になります。修飾キーは、Shift + Lが大文字の「L」を作成し、Lキーのみが小文字の「l」を作成するように、特定のキーの動作を「変更」することです。ユーザーがこれらの種類のボタンを押したときに実際のアクションが発生するのを見ることに慣れていないため、実際のロジックにModifierkeysを使用すると、問題が発生し、イライラする可能性があります。しかし、Altキーを押したときにMenuItemsを強調表示するなど、これが理にかなっている場所があることに同意します。

しかし、実際の問題については、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はこのコードでコマンドを実行することもできます。

于 2012-05-15T09:49:23.947 に答える