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

时间:2015-11-04 19:16:57

标签: c# windows-phone-8 windows-runtime windows-phone-8.1

我一直在与此斗争...... 我正在使用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。消息:“您有未保存的更改,是否要退出?”:是/否。

1 个答案:

答案 0 :(得分:1)

您可以使用以下活动。

HardwareButtons.BackPressed += HardwareButtons_BackPressed;



    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {

    }