繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM