我尝试使用命令绑定左ALT键以切换WPF中菜单的可见性。 但它没有用。命令没有解雇..
<Window.InputBindings>
<KeyBinding
Key="LeftAlt"
Command="{Binding Path=MenuVisibilitySetCommand}"/>
</Window.InputBindings>
我注意到其他特殊键(例如Alt,Ctrl等)也没有在这里工作..
如何在WPF中为特殊键进行键绑定?
答案 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也可以在此代码中触发您的命令。