Windows store apps Win8存储应用程序,在OnNavigatedFrom方法中执行一些检查

Windows store apps Win8存储应用程序,在OnNavigatedFrom方法中执行一些检查,windows-store-apps,messagedialog,Windows Store Apps,Messagedialog,当我点击导航按钮(返回)到主页时,我想做一些检查。 1.显示消息对话框显示更新内容“是”或“否” 2.如果单击“是”,则更新当前页面。 如果单击“否”,则不执行任何操作 3.导航至主页 我使用下面的代码,但当前它将首先返回主页,然后弹出消息对话框。 如何让导航到主页的操作在我单击消息对话框后发生 protected async override void OnNavigatedFrom(NavigationEventArgs e) { MessageDialog

当我点击导航按钮(返回)到主页时,我想做一些检查。 1.显示消息对话框显示更新内容“是”或“否” 2.如果单击“是”,则更新当前页面。 如果单击“否”,则不执行任何操作 3.导航至主页

我使用下面的代码,但当前它将首先返回主页,然后弹出消息对话框。 如何让导航到主页的操作在我单击消息对话框后发生

    protected async override void OnNavigatedFrom(NavigationEventArgs e)
    {

        MessageDialog md = new MessageDialog("Do you want to save");
        md.Commands.Add(new UICommand("Yes", (UICommandInvokedHandler) =>
            {
                Application.Current.Exit();
                //this.UpdateClick();
            }));
        md.Commands.Add(new UICommand("No"));
        var task = md.ShowAsync().AsTask();
        await task;
    }

OnNavigateFrom不可取消,并且在导航已经发生之后发生

与其拥有代码,不如将“后退”按钮重新连接到弹出消息框的单击处理程序?然后,当用户单击按钮时,您将执行相应的导航

    private async void OnBackButtonClick(object sender, RoutedEventArgs routedEventArgs)
    {
        MessageDialog md = new MessageDialog("Do you want to save");

        md.Commands.Add(new UICommand("Yes", uiCommandInvokedHandler =>
        {
            // Refresh logic
        }));

        md.Commands.Add(new UICommand("No", uiCommandInvokedHandler =>
        {
            var rootFrame = (Frame)Window.Current.Content;
            rootFrame.Navigate(typeof(MainPage));
        }));

        await md.ShowAsync();
    }