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.消息:"您有未保存的更改,您想退出吗?":是/否。

Windows Phone 8.1运行时在OnNavigatedFrom(后退按钮)上显示消息框

您可以使用以下事件。

HardwareButtons.BackPressed += HardwareButtons_BackPressed;

    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
    }