Подтверждение MessageDialog не работает в Windows 10 Mobile, но работает в Windows 10

Я хочу попросить подтверждения, если пользователь хочет покинуть страницу, когда кнопка Назад (аппаратная или AppViewBackButton), используя следующий код в моем App.xaml.cs

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
  ...
      SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
  ...
}

Private async void OnBackRequested(object sender, BackRequestedEventArgs e)
{
    Frame rootFrame = Window.Current.Content as Frame;

    if (rootFrame.Content.GetType() == typeof(GamePage))
    {
        var op = await ShowAsync("Do you want to exit?", "Exit?");

        if (op == MessageBoxResult.OK)
        {

            rootFrame.GoBack();
            e.Handled = true;
        }
    }
    else
    {
        if (rootFrame.CanGoBack)
        {
            e.Handled = true;
            rootFrame.GoBack();
        }
    }
}

public async Task<MessageBoxResult> ShowAsync(string messageBoxText, string caption)
{
    MessageBoxResult result = MessageBoxResult.None;

    MessageDialog md = new MessageDialog(messageBoxText, caption);
    md.Commands.Add(new UICommand("OK",
         new UICommandInvokedHandler((cmd) => result = MessageBoxResult.OK)));


    md.Commands.Add(new UICommand("Cancel",
        new UICommandInvokedHandler((cmd) => result = MessageBoxResult.Cancel)));
    md.CancelCommandIndex = (uint)md.Commands.Count - 1;


    var op = await md.ShowAsync();

    return result;
}

Проблема в var op = await md.ShowAsync(); не ждет результата. Приложение показало диалоговое окно кратко и, не ожидая какого-либо ввода, просто закройте приложение.

В данный момент у меня нет устройства с Windows 10 Mobile для тестирования, поэтому я тестирую с помощью эмулятора. Проблема с эмулятором или кодом?

Этот код отлично работает на моем рабочем столе.

0 ответов

Другие вопросы по тегам