无法使键盘加速器正常工作……

时间:2018-07-21 12:47:36

标签: c# visual-studio uwp uwp-xaml

我还将这个问题发布到Microsoft文档here

我正在尝试在UWP应用程序中实现访问键和键盘加速器,据我所知,这是“良好的编码习惯”。这是MainPage.xaml的一个片段,在这里我尝试实现“ Ctrl + O”的“打开”快捷键

<MenuFlyoutItem Text="Open" AccessKey="O" Click="menuFileOpen">
   <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Control" Key="O" Invoked="menuFileOpen"/>
   </MenuFlyoutItem.KeyboardAccelerators> 
</MenuFlyoutItem>

MainPage.xaml.cs内部是以下代码段:

    /// <summary>
    /// Menu option to select a file
    /// </summary>
    private void menuFileOpen(object sender, RoutedEventArgs e)
    {
        this.OpenFile();
    }

    /// <summary>
    /// Keyboard Accelerator to select a file
    /// </summary>
    private void menuFileOpen(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
    {
        this.OpenFile();
        args.Handled = true; // because the docs say to do this
    }

    /// <summary>
    /// Opens the dialog box to select a file.
    /// </summary>
    private void OpenFile()
    {
        // TODO: write the code to open the file
        throw new NotImplementedException();
    }

出于调试目的,由于存在问题,我实际上没有实现打开文件的代码。应该发生的一切是,当我从菜单中选择“打开”时,我应该在调试器中得到“ NotImplementedException”,并且程序应该停止。

简而言之,用鼠标选择弹出菜单项会引发异常。使用访问键也会引发异常。但是,没有按下键盘加速器!它没有输入“ Invoked”方法(上面的第二个方法签名),所以我什至无法放置断点来查看该方法是否完全成功……我敢肯定它不会t!

我尝试过的事情:

  • 重命名方法以为其赋予唯一名称
  • 在XAML文件中的KeyboardAccelerator标记上添加“ IsEnabled”属性,并将其设置为true。

非常感谢您的协助。

0 个答案:

没有答案