我使用的示例代碼Busy.xaml
顯示ModalDialog
在Template10
:(UWP)使用ESC鍵關閉ModalDialog
public static void SetBusy(bool busy, string text = null)
{
WindowWrapper.Current().Dispatcher.Dispatch(() =>
{
var modal = Window.Current.Content as ModalDialog;
var view = modal.ModalContent as Busy;
if (view == null)
modal.ModalContent = view = new Busy();
modal.IsModal = view.IsBusy = busy;
view.BusyText = text;
modal.CanBackButtonDismiss = true;
});
}
我可以用ALT+Left Arrow
關閉此對話框,但在大多數桌面應用程序按ESC
鍵通常會也關閉彈出或對話框。
我嘗試添加代碼來處理KeyDown
Busy.xaml
,但是當我按ESC
或任何鍵時,此方法從未執行過。
private void UserControl_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Escape)
{
e.Handled = true;
SetBusy(false);
}
}
那麼,如何使這個ModalDialog
接近時用戶按ESC
鍵?
我已經編輯我的問題,謝謝。 –
@AskTooMuch請注意您的用例:除了處理鍵盤上的「轉義」外,您可能還想處理XBox控制器上的「B」按鈕以及手機和平板電腦等移動設備上的「硬件後退按鈕」。 – Herdo
我測試過了,這些場景中的大部分都是由Template10處理的,我無法確認它是否處理XBOX上的「B」按鈕,因爲我沒有XBOX設備來測試,但是感謝讓我知道這個問題。 –