我一直在与此斗争...... 我正在使用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,MessageBox仍然无法正常工作。我甚至无法取消后退按钮按下。 所以我想更新一下我的问题:在Windows Phone 8.1 Runtime上按下后退按钮创建确认消息框的最佳方法是什么? F. e。消息:“您有未保存的更改,是否要退出?”:是/否。
答案 0 :(得分:1)
您可以使用以下活动。
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
}