Win8商店应用程序,在OnNavigatedFrom方法中做一些检查

时间:2013-01-09 02:35:57

标签: windows-store-apps messagedialog

当我点击NavigateButton(Back)到主页时,我想做一些检查。 1.显示MessageDialog show更新内容“是”或“不是” 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;
    }

1 个答案:

答案 0 :(得分:1)

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();
    }