2015-11-04 4 views
0

Я боролся с этим на некоторое время ... Я использую 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. сообщение: «У вас есть несохраненные изменения, вы хотите выйти?»: Да/Нет

+1

Вам необходимо перехватить кнопку «Назад» (для этого есть событие). В 'OnNavigatedFrom' уже слишком поздно –

+0

Я перехватил кнопку кнопки назад, но я не могу ее отключить ... Я использую событие HardwareButtons_BackPressed, но я не могу отключить его функциональность. – Keran

+0

@ Keran Попробуйте установить 'e.Handeled = true', если вам нужно отключить кнопку« Назад »для дальнейшего процесса. – Romasz

ответ

1

Вы можете использовать следующее событие.

HardwareButtons.BackPressed += HardwareButtons_BackPressed; 



    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) 
    { 

    } 
+0

Хорошо, я использовал это событие, однако пользовательский интерфейс все же зависает, когда я запускаю окно сообщения. – Keran

Смежные вопросы