【Windows 10 应用开发】使用快捷访问键
UWP 雖然主要面向觸控操作,但 Windows 設備是萬能工具,不用手指不用筆的時候,也可能會接上鍵盤耍耍。因此,給應用界面上的一些元素弄個快捷訪問鍵也挺不錯的。為了使用 Windows 上的各類應用具備統一性,UWP 應用的快捷訪問鍵延續了傳統,激活方法也是先按 Alt 鍵,然后在不松開 Alt 鍵的前提下再按訪問鍵。
咱們先用一個示例來表演一下。
下面 XAML 聲明了一個按鈕,并設置了訪問鍵。
<Button Content="Update" Click="OnUpdate" AccessKey="U"/>訪問鍵多用于按鈕和菜單項,因此使用按鈕時,訪問鍵被激活后,會關聯地自動引發 Click 事件。
下面我們處理一下 Click 事件,彈一個對話框。
private async void OnUpdate(object sender, RoutedEventArgs e){messageDlg.Content = "Update 按鈕被激活。";await messageDlg.ShowAsync();}現在這個訪問鍵就能使用了。運行程序,然后按 Alt + U ,就能看到如下圖所示的效果了。
按鈕比較特殊,訪問鍵激活時會自動與 Click 事件關聯,可是,對于一般的 UI 元素就不行了。比如
<Rectangle Fill="Red" Height="30" Width="100" HorizontalAlignment="Left" AccessKey="R"/>對于以上矩形,按下 Alt + R 系統是無法判斷其要完成的行為的,那要是我真想讓這個矩形也能響應訪問鍵,怎么弄? 這時候就要處理?AccessKeyInvoked 事件,當訪問鍵被正確識別,就會引發這個事件,我們可以處理這個事件,然后寫上自己的代碼。
比如我這里,同樣是彈出對話框。
<Rectangle Fill="Red" …… AccessKey="R" AccessKeyInvoked="Rectangle_AccessKeyInvoked" />下面是事件處理代碼。
private async void Rectangle_AccessKeyInvoked(UIElement sender, AccessKeyInvokedEventArgs args){messageDlg.Content = "這是紅色矩形。";await messageDlg.ShowAsync();}運行程序后,按 Alt + R,就會引發事件了。如下圖
?
?
要想顯示訪問鍵提示,只需按一下 Alt 鍵即可,如下圖。
?
有大伙伴會說,我要是不想用系統默認的訪問鍵提示呢,我想自己處理。
當然是可以的,首先,你得在代碼里面執行這一行代碼。
Windows.UI.Xaml.Input.AccessKeyManager.AreKeyTipsEnabled = false;這樣,默認的顯示提示就被禁用了。
?
然后,你要處理兩個事件:
AccessKeyDisplayRequested ——當要顯示訪問鍵提示時,引發該事件,這時候可以添加你的處理代碼,向用戶顯示訪問鍵提示。
AccessKeyDisplayDismissed—— 當提示要關閉(消失)時引發,在此事件中,你要用你的代碼來隱藏訪問鍵提示。
來,我們改改上面的矩形。
<Rectangle Fill="Red" Height="30" Width="100" HorizontalAlignment="Left" AccessKey="R" AccessKeyInvoked="Rectangle_AccessKeyInvoked" Margin="0,13"AccessKeyDisplayRequested="OnAccessKeyDisplayReq"AccessKeyDisplayDismissed="OnAccessKeyDisplayDism"><Rectangle.ContextFlyout><Flyout Placement="Bottom"><Flyout.Content><TextBlock FontSize="16" Foreground="Red"/></Flyout.Content></Flyout> </Rectangle.ContextFlyout></Rectangle>我選用了一個 Flyout 類來顯示提示。
下面是處理事件代碼。
private void OnAccessKeyDisplayReq(UIElement sender, AccessKeyDisplayRequestedEventArgs args){FrameworkElement ele = sender as FrameworkElement;Flyout fly = ele.ContextFlyout as Flyout;TextBlock tb = fly.Content as TextBlock;tb.Text = $"請按【Alt + {ele.AccessKey}】鍵";fly.ShowAt(ele);}private void OnAccessKeyDisplayDism(UIElement sender, AccessKeyDisplayDismissedEventArgs args){FrameworkElement ele = sender as FrameworkElement;Flyout fl = ele.ContextFlyout as Flyout;fl.Hide();}?
?好,現在再次運行,然后按一下 Alt 鍵。效果如圖。
?
?好了,今天的話題就聊到這里吧,老周也餓了,該填填肚子了。
本文示例代碼下載地址
?
轉載于:https://www.cnblogs.com/tcjiaan/p/7019369.html
總結
以上是生活随笔為你收集整理的【Windows 10 应用开发】使用快捷访问键的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java集合框架03
- 下一篇: 解决hao123胁持chrome等浏览器