Подтверждение 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 для тестирования, поэтому я тестирую с помощью эмулятора. Проблема с эмулятором или кодом?
Этот код отлично работает на моем рабочем столе.