如何在Windows Phone 8中覆盖窗口后退按钮?

时间:2013-08-28 04:39:28

标签: c# windows-phone-7 windows-phone-8

当我从我的应用程序点击时,我需要将窗口向后按钮按下。我尝试了下面的方法,但它在Windows Phone 8中不起作用?

方法1)

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)

            {

           e.Cancel = true;

           var result = MessageBox.Show("Do you want to exit?", "Attention!",
                                      MessageBoxButton.OKCancel);

        if (result == MessageBoxResult.OK)
        {
           // base.OnBackKeyPress(e);
            return;
        }
        e.Cancel = true;
    }

方法2)

a)在xaml标题

中写道
BackKeyPress="MyBackKeyPress"

b)在构造函数

中初始化它
 BackKeyPress += OnBackKeyPress;

c)并调用此方法

   private void MyBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
    {
        e.Cancel = true; //tell system you have handled it
        //you c
    }

这两种方法都不起作用。当我点击后退按钮时,应用程序被破坏,无法控制后门按钮。有帮助吗?

4 个答案:

答案 0 :(得分:6)

根据认证要求,建议不要覆盖后退按钮 -

  

必须关闭应用程序第一个屏幕中的“后退”按钮   该应用程序。

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184840%28v=vs.105%29.aspx

您可以尝试此代码

protected override void OnBackKeyPress(CancelEventArgs e)
{
    if(MessageBox.Show("Are you sure you want to exit?","Confirm Exit?", 
                            MessageBoxButton.OKCancel) != MessageBoxResult.OK)
    {
        e.Cancel = true; 

    }
}

答案 1 :(得分:2)

试试这个适用于我的那个

第1步:在XAML中

BackKeyPress="PhoneApplicationPage_BackKeyPress"

第2步:在C#中

private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
        {
            MessageBoxResult mRes = MessageBox.Show("Would you like to exit?", "Exit", MessageBoxButton.OKCancel);
            if (mRes == MessageBoxResult.OK)
            {
                NavigationService.GoBack();
            }
            if (mRes == MessageBoxResult.Cancel)
            {
                e.Cancel = true;
            }
        }

答案 2 :(得分:1)

MyBackKeyPress方法中,抛出一个新的异常以在运行时关闭应用并返回到手机的菜单。我不知道这是否是实现它的好方法,但这无疑解决了这个问题。

private void MyBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
     throw new Exception();
}

DubuggingVisual Studio处没有{{1}}的模拟器/设备上对此进行测试,您会看到您的应用已关闭。

答案 3 :(得分:0)

我尝试过同样的事情。但它不起作用。我把断点放在代码中,并且当我点击后退按钮时也发现它没有进入或没有调用该函数。 - user1703145 45分钟前

您是否忘记在XAML中绑定此事件?

<phone:PhoneApplicationPage ..... BackKeyPress="phoneApplicationPage_BackKeyPress">