处理Windows Phone 8.1中的背压事件

时间:2015-07-02 11:28:28

标签: c# windows-phone-8.1

我想处理windows phone 8.1应用程序中的背景按钮。我希望每当按下背压时导航到上一页但是当在第二页(主页面之后)按下反压时我希望应用程序退出或要求退出。 我正在使用此代码进行导航

    Windows.Phone.UI.Input.HardwareButtons.BackPressed +=             HardwareButtons_BackPressed;
    }
    public bool Handled { get; set; }
    private void HardwareButtons_BackPressed(object sender,      Windows.Phone.UI.Input.BackPressedEventArgs e)
    {
        Frame frame = Window.Current.Content as Frame;
        if (frame == null)
        {
            return;
        }

        if (frame.CanGoBack)
        {
            frame.GoBack();
            e.Handled = true;
        }
    }

3 个答案:

答案 0 :(得分:3)

尝试以下代码。它对我有用。

private async void HardwareButtons_BackPressed(object sender,BackPressedEventArgs e)         {             框架rootFrame = Window.Current.Content为Frame;             e.Handled = true;

        var curpage = rootFrame.CurrentSourcePageType.FullName;
            if(curpage=="your page name where you want to show dialog")
            { 
            var msg = new MessageDialog("Sure to Exit?");
            var okBtn = new UICommand("OK");
            var cancelBtn = new UICommand("Cancel");
            msg.Commands.Add(okBtn);
            msg.Commands.Add(cancelBtn);
            IUICommand result = await msg.ShowAsync(); 
            if (result != null && result.Label == "OK")
            {
                Application.Current.Exit();
            }
        }
            else
            {
                if (rootFrame.CanGoBack)
                {
                    rootFrame.GoBack();
                }
            }
    }

答案 1 :(得分:0)

我对您的问题的理解是,每当用户通过按返回按钮导航回第一页时,您想要退出应用程序。如果是这样,我们需要做的是在第一页的OnNavigatedFrom事件中检查NavigationMode是否为Back。请尝试以下代码:

    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        base.OnNavigatedFrom(e);

        if(e.NavigationMode == NavigationMode.Back)
        {
            App.Current.Exit();
        }
    }

答案 2 :(得分:0)

如果要删除第一个导航页面的历史记录,可以将其从BackStack中删除,第二个页面将被视为第一个页面。只需将其放在您的主页上:

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    Frame.BackStack.Remove(Frame.BackStack.First());
    base.OnNavigatedFrom(e);
}