WPF 中的快捷键绑定

4

我刚开始学习WPF,在我正在构建的应用程序中,我想在按下alt键时显示主菜单,就像Windows Vista和Windows 7中的Windows资源管理器一样。我尝试使用只设置修饰符的键绑定,但似乎不起作用。

这是我目前的代码:

<Window.CommandBindings>
    <CommandBinding Command="{x:Static local:MainWindow.ShowMenuCommand}"
                        CanExecute="ShowMenuCommand_CanExecute"
                        Executed="ShowMenuCommand_Executed"/>
</Window.CommandBindings>
<Window.InputBindings>
    <KeyBinding Key="Alt" Command="{x:Static local:MainWindow.ShowMenuCommand}" />
</Window.InputBindings>

我希望当失去焦点时,菜单也能消失。有什么想法吗?
5个回答

2

2
免责声明:这不是一种解答尝试,因为用户已经找到了解决方案。这只是提供有关该主题的附加信息。
对于任何想知道为什么@jamier尝试使用此KeyBinding时无法工作的人,可以在MSDN上的KeyBinding类页面中找到答案:
除功能键和数字键盘键之外,有效的KeyGesture必须恰好包含一个Key和一个或多个ModifierKeys。
因此,单独的一个修饰符不能用作KeyBinding中有效的Gesture。

1

你尝试过将Key属性设置为"LeftAlt""RightAlt"吗?Key属性是System.Windows.Input.Key枚举类型,其中没有"Alt"值。

AltKeyGesture中用作修饰符,因此您在其他地方看到它单独出现。但是,在Key枚举中,它具有左右Alt键的实例。

您很可能需要两个绑定,一个用于每个Alt键。


0

尝试在您的菜单控件上设置IsMainMenu="True"。这样做是否给您想要的行为?


0
尝试设置 Modifiers="Alt"Key="LeftAlt":
<KeyBinding Key="LeftAlt" Modifiers="Alt" Command="{x:Static local:MainWindow.ShowMenuCommand}" /> 

在.NET Framework 4中,从代码中设置这个会导致一个System.NotSupportedException异常,其消息为“不支持'Alt+LeftAlt'键和修饰符组合的KeyGesture。” - cod3monk3y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接