3

当我从我的应用程序中单击时,我需要覆盖 Windows 后退按钮。我尝试了下面的 2 种方法,但它在 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) 在构造函数中初始化 this

 BackKeyPress += OnBackKeyPress;

c) 并调用此方法

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

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

4

4 回答 4

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; 

    }
}
于 2013-08-28T05:45:35.597 回答
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;
            }
        }
于 2013-08-28T05:07:23.120 回答
1

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

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

Dubugging在没有in 的情况下在模拟器/设备上进行测试Visual Studio,您将看到您的应用程序关闭。

于 2014-05-05T20:57:50.940 回答
0

我也试过了。但它不工作。我将断点放在代码中,当我单击返回按钮时,还发现它没有进入或没有调用该函数。– user1703145 45 分钟前

您没有忘记在 XAML 中绑定此事件吗?

<phone:PhoneApplicationPage ..... BackKeyPress="phoneApplicationPage_BackKeyPress">
于 2013-08-28T07:58:22.497 回答