[英]How do I trigger flyout menu item when a key/letter is pressed while the flyout is open like in MS Office apps?
當用戶右鍵單擊某個項目以顯示上下文菜單時,我希望他們能夠僅在其鍵盤上按下一個鍵(即使沒有修飾符)也可以激活某些菜單(例如在Office應用程序中)。
我看過訪問鍵和鍵盤加速器,但是它們似乎不是正確的API,因為它們需要保留修飾符。
謝謝。
您可以在MenuFlyout
打開時將PreviewKeyDown
事件處理程序添加到當前窗口內容。 當按下特定的VirtualKey
時,在PreviewKeyDown
事件處理程序中調用匹配方法。 然后在MenuFlyout關閉時刪除PreviewKeyDown
事件處理程序,以避免錯誤觸發。
<Button Content="Edit Options" HorizontalAlignment="Left">
<Button.Flyout >
<MenuFlyout Opened="MenuFlyout_Opened" Closed="MenuFlyout_Closed" >
<MenuFlyoutItem Text="Share">
<MenuFlyoutItem.Icon>
<FontIcon Glyph=""/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Copy"/>
<MenuFlyoutItem Text="Delete"/>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Rename"/>
<MenuFlyoutItem Text="Select"/>
</MenuFlyout>
</Button.Flyout>
</Button>
后面的代碼
private void MenuFlyout_Opened(object sender, object e)
{
Window.Current.Content.PreviewKeyDown += Content_PreviewKeyDown;
}
private void MenuFlyout_Closed(object sender, object e)
{
Window.Current.Content.PreviewKeyDown -= Content_PreviewKeyDown;
}
private void Content_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
if(e.Key == VirtualKey.D)
{
//delete current item
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.