我正在构建的本质上是一个带有文本字段和结果列表的单页搜索应用程序。由于此应用程序仅包含一个页面,因此点击手机上的硬件后退按钮将终止我的应用并将用户带到"开始"应用。
我认为,如果我能以某种方式覆盖此标准行为,以便按后退会将用户带到同一页面上的先前成功搜索结果(如果有的话,否则退出应用程序就像正常返回一样)。
问题是是否可以以这种方式覆盖后退导航,如果是,那么如何?
您可以通过重写页面中的 OnBackKeyPress
方法来捕获硬件后退键。您可以检测要执行内部操作而不是退出页面的情况。
这记录在 MSDN 上。
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if (...)
{
// don't want to exit the app in this case
e.Cancel;
}
base.OnBackKeyPress(e);
}
但是,请注意确保不要中断使用后退键退出应用程序,否则应用程序可能无法通过市场认证。
protected virtual void OnNavigatingFrom(
NavigatingCancelEventArgs e
)
覆盖页面中的"导航自"菜单并做e.取消 = 真
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
e.Cancel = true;
//Other code
}
http://msdn.microsoft.com/en-美国/图书馆/MS607458(与 95 相比)
你应该这样做:
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
e.Cancel = MessageBox.Show("Exit?", "Page", MessageBoxButton.OKCancel) !=
MessageBoxResult.OK;
base.OnBackKeyPress(e);
}