2015-11-04 45 views
0

我一直在這個戰鬥了一會兒...... 我使用的Windows Phone 8.1運行時(不是Silverlight的),我有以下代碼:的Windows Phone 8.1運行時顯示的消息框

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手機認爲應用程序已損壞,UI被阻止。

有沒有什麼辦法可以正確顯示按下後退按鈕的消息框? 如果沒有,是否可以完全禁用該頁面的後退按鈕?

感謝, 李可染

編輯15-11-2015: 只是想碰到這個職位。我沒有使用HardwareButton事件與Navigation Helper一起運行,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

好的,我已經使用了這個事件,但是當我啓動消息框時UI仍然凍結。 – Keran

相關問題