我不确定它在 .NET MAUI 中是否可行。有没有人找到检测按键(包括特殊键)的解决方案?
键盘加速器位于 MAUI .NET 8 中。通过添加到
KeyboardAccelerator
集合,可以将 MenuFlyoutItem
附加到 KeyboardAccelerators
。
这可以添加到
ContentPage.MenuBarItems
,如下
<!-- MainPage.xaml -->
<ContentPage>
<ContentPage.MenuBarItems>
<MenuBarItem Text="File">
<MenuFlyoutItem Text="Down" Clicked="MenuFlyoutItem_Clicked">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Down" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Up" Clicked="MenuFlyoutItem_Clicked">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Up" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Left" Clicked="MenuFlyoutItem_Clicked">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Left" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Right" Clicked="MenuFlyoutItem_Clicked">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Right" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
</MenuBarItem>
</ContentPage.MenuBarItems>
</ContentPage>
// MainPage.xaml.cs
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void MenuFlyoutItem_Clicked(object sender, EventArgs e)
{
Debug.WriteLine($"MenuFlyoutItem {((MenuFlyoutItem)sender).Text} clicked");
}
}
https://learn.microsoft.com/en-us/dotnet/maui/user-interface/keyboard-accelerators?view=net-maui-8.0