Я боролся с этим на некоторое время ... Я использую Windows Phone 8.1 Runtime (не Silverlight) и у меня есть следующий код:Windows Phone 8.1 во время выполнения шоу окно сообщения на OnNavigatedFrom (кнопка назад)
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
if (!ExitWithoutSave().Result) return;
this.navigationHelper.OnNavigatedFrom(e);
}
private async Task<bool> ExitWithoutSave()
{
MessageDialog dialog = new MessageDialog("There are unsaved changes, are you sure you wish to leave?", "Unsaved changes");
dialog.Commands.Clear();
dialog.Commands.Add(new Windows.UI.Popups.UICommand("Yes") { Id = 0 });
dialog.Commands.Add(new Windows.UI.Popups.UICommand("No") { Id = 1 });
dialog.DefaultCommandIndex = 0;
dialog.CancelCommandIndex = 1;
var result = await dialog.ShowAsync();
if (result.Label == "No")
{
canceled = true;
}
return canceled;
}
В принципе, я хочу спросить пользователя, хочет ли он уйти без сохранения, если он говорит «нет», тогда я хочу заблокировать эту функциональность.
Проблема в том, что во время выполнения OnNavigatedFrom существует ожидание, телефон Windows считает, что приложение сломалось, и пользовательский интерфейс заблокирован.
Есть ли способ правильно показать окно сообщения при нажатии кнопки «Назад»? Если нет, можно ли полностью отключить кнопку «Назад» для этой страницы?
Спасибо, Керан
Edit 15-11-2015: Просто хотел поднять этот пост. Мне не повезло с использованием событий HardwareButton вместе с помощником навигации, MessageBoxes все еще не работают. Я даже не могу отменить нажатие кнопки «Назад». Итак, я хотел обновить свой вопрос: что лучше всего создать окно подтверждения подтверждения на кнопке «Назад» на Windows Phone 8.1 Runtime? F. e. сообщение: «У вас есть несохраненные изменения, вы хотите выйти?»: Да/Нет
Вам необходимо перехватить кнопку «Назад» (для этого есть событие). В 'OnNavigatedFrom' уже слишком поздно –
Я перехватил кнопку кнопки назад, но я не могу ее отключить ... Я использую событие HardwareButtons_BackPressed, но я не могу отключить его функциональность. – Keran
@ Keran Попробуйте установить 'e.Handeled = true', если вам нужно отключить кнопку« Назад »для дальнейшего процесса. – Romasz