我一直在這個戰鬥了一會兒...... 我使用的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。消息:「您有未保存的更改,是否希望退出?」:是/否
你需要攔截後退按鈕(這是一個事件)。在'OnNavigatedFrom'已經太晚了 –
我確實攔截了後退按鈕,但我似乎無法禁用它... 我正在使用HardwareButtons_BackPressed事件,但似乎無法禁用它的功能。 – Keran
@Keran如果您需要禁用後退按鈕的進一步處理,請嘗試設置「e.Handeled = true」。 – Romasz