2

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

1 回答 1

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();
    }
于 2013-01-23T11:31:31.023 回答