【Windows 10 應用開發】使用快捷訪問鍵

來源:互聯網
上載者:User

標籤:await   判斷   這一   sse   upd   sam   dismiss   設定   message   

UWP 雖然主要面向觸控操作,但 Windows 裝置是萬能工具,不用手指不用筆的時候,也可能會接上鍵盤耍耍。因此,給應用介面上的一些元素弄個快捷訪問鍵也挺不錯的。為了使用 Windows 上的各類應用具備統一性,UWP app的快捷訪問鍵延續了傳統,啟用方法也是先按 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 鍵。效果。

 

 好了,今天的話題就聊到這裡吧,老周也餓了,該填填肚子了。

本文範例程式碼

 

【Windows 10 應用開發】使用快捷訪問鍵

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.