Windows Phone 8.1运行时在OnNavigatedFrom(后退按钮)上显示消息框
本文关键字:按钮 显示 消息 Phone 运行时 OnNavigatedFrom Windows | 更新日期: 2023-09-27 18:20:31
我已经为此斗争了一段时间。。。我使用的是WindowsPhone8.1运行时(不是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会被阻止。
有什么方法可以在按下后退按钮时正确显示消息框吗?如果没有,是否可以完全禁用此页面的后退按钮?
谢谢,Keran
编辑15-11-2015:只是想撞一下这个帖子。我在使用HardwareButton事件和Navigation Helper时运气不佳,MessageBoxes仍然不起作用。我甚至不能取消按下后退按钮。所以我想再次提出我的问题:在Windows Phone 8.1 Runtime上,在后退按钮上创建确认消息框的最佳方式是什么?F.e.消息:"您有未保存的更改,您想退出吗?":是/否。
您可以使用以下事件。
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
}