![](/img/trans.png)
[英]Overriding the Back Button in Prism for Windows Phone 8.1 Runtime
[英]Windows Phone 8.1 runtime show message box on OnNavigatedFrom (back button)
我已經為此戰斗了一段時間...我正在使用Windows Phone 8.1 Runtime(而不是silverlight),並且具有以下代碼:
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. 消息:“您尚未保存更改,是否要退出?”:是/否。
您可以使用以下事件。
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.