如何覆盖windows phone 8中的windows后退按钮
本文关键字:windows 中的 按钮 phone 覆盖 何覆盖 | 更新日期: 2023-09-27 18:29:12
当我从应用程序中单击时,我需要ovveride windows back按钮。我尝试了下面的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) 在构造函数中初始化
BackKeyPress += OnBackKeyPress;
c) 并将此方法称为
private void MyBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true; //tell system you have handled it
//you c
}
这两种方法都不起作用。当我被点击后退按钮时,应用程序被破坏,无法控制后退按钮。有什么帮助吗?
根据认证要求,不建议覆盖后退按钮-
在应用程序的第一个屏幕上按下"后退"按钮必须关闭应用程序。
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:在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;
}
}
在MyBackKeyPress
方法中,抛出一个新的异常以在运行时关闭应用程序并返回手机菜单。我不知道这是否是一个很好的方法来实现它,但这肯定解决了问题。
private void MyBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
throw new Exception();
}
在Visual Studio
中没有Dubugging
的模拟器/设备上测试此项,您将看到您的应用程序关闭。
我也试过了。但它不起作用。我把断点放在代码中,当我点击返回按钮时,发现它没有进入或没有调用函数user1703145 45分钟前
你还没有忘记在XAML中绑定此事件?
<phone:PhoneApplicationPage ..... BackKeyPress="phoneApplicationPage_BackKeyPress">