Windows 8 KeyBinding

时间:2014-11-28 17:52:53

标签: wpf xaml

在Windows桌面应用程序中,您可以使用EscapeRoutedCommandsCommandBindings为应用程序创建键盘快捷键(例如KeyBindings退出)。但我找不到任何方法来使用Windows 8和8.1 metro应用程序。

1 个答案:

答案 0 :(得分:1)

您可以使用AutomationProperties.AccessKeyAutomationProperties.AcceleratorKey(非助记键快捷键)来记录访问密钥,此信息通过辅助技术传递给用户

你应该做的是使用KeyDownKeyUp个事件,根据 MSDN

  

重要设置AutomationProperties.AcceleratorKey或   AutomationProperties.AccessKey不启用键盘功能。   它只向UI自动化框架报告应该是什么键   使用,以便这些信息可以通过辅助传递给用户   技术。密钥处理的实现仍然需要   在代码中完成,而不是XAML。您仍然需要附加处理程序   KeyDown或KeyUp事件在相关控件上才能实际实现   在您的应用中实现键盘快捷键行为。

尝试此操作(例如 Ctrl + Q 关闭应用程序):

XAML:

<Grid  KeyDown="Grid_KeyDown" KeyUp="Grid_KeyUp">
    <Button Content="Exit" AutomationProperties.AcceleratorKey="Control Q" />
</Grid>

代码:

public bool isCtrlKeyPressed { get; set; }

private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == VirtualKey.Control) isCtrlKeyPressed = true;
    else if (isCtrlKeyPressed && e.Key == VirtualKey.Q)
    {
        Application.Current.Exit();
    }
}

private void Grid_KeyUp(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == VirtualKey.Control) isCtrlKeyPressed = false;
}