在Windows Phone 8.1RT的页面中处理后退

时间:2015-08-12 14:36:51

标签: navigation windows-phone-8.1

在我的应用程序中的一个页面中,我必须在显示后显示弹出框如果用户按下后退按钮而不删除弹出框然后我必须先处理该框(可能正在删除)并在下一个按下我想要导航到上一页。它就像键盘打开时首先按下它会将其最小化,然后在第二个按页面中导航到上一页。我怎样才能做到这一点?

我尝试在页面级别处理BackPressed事件,但它不起作用。代码在这里

        private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
        Frame frame = Window.Current.Content as Frame;

        if(isOPen)
        {
            isOPen=false;
            Storyboard2.Begin();
            parda.Visibility = Visibility.Collapsed;
            e.Handled = true;
        }
        else
        {
            frame.GoBack();
            e.Handled = true;
        }
    }

isOPen保存状态天气弹出窗口当前是否打开。

更新

这就是我所做的。像往常一样首先登陆主页,然后导航到第二页,在第二页,我必须弹出一个带有文本框的网格,以便弹出窗口可见性我从检查处理它并取消选中toggleappbarbutton事件。

代码很简单:

        private void togglr_Checked(object sender, RoutedEventArgs e)
    {
        isOPen = true;
        parda.Visibility = Visibility.Visible;
        Storyboard1.Begin();
    }

    private void togglr_Unchecked(object sender, RoutedEventArgs e)
    {
        isOPen = flase;
        parda.Visibility = Visibility.Collapsed;
        Storyboard2.Begin();
    }

多数民众赞成。

2 个答案:

答案 0 :(得分:1)

在if条件下,我没有看到将isOpen设置为false

这样你的if永远不会进入else块

答案 1 :(得分:0)

我在OnNavigatingFrom方法(通过覆盖)上编写逻辑,就像这样

        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
    {
        if(isOPen)
        {
            e.Cancel = true;
            Storyboard2.Begin();
            parda.Visibility = Visibility.Collapsed;
        }
    }

现在它运作良好。