我还将这个问题发布到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!
我尝试过的事情:
非常感谢您的协助。