是否可以覆盖向后导航?

时间:2012-12-04 10:56:26

标签: navigation windows-phone-8

我正在构建的是一个单页搜索应用程序,其中包含文本字段和结果列表。由于此应用程序仅包含一个页面,因此点击手机上的硬件后退按钮将会终止我的应用并将用户带到“开始”应用。

我认为如果我可以以某种方式覆盖此标准行为,以某种方式重写此标准行为,以便用户在此同一页面上将用户带到之前成功的搜索结果(如果有的话,否则将退出),这将为用户提供更好的经验像往常一样的应用程序会这样做。)

问题是,是否可以以这种方式覆盖返回导航,如果是,那么如何?

3 个答案:

答案 0 :(得分:1)

您可以通过覆盖页面中的OnBackKeyPress方法来捕获硬件按键。您可以检测要执行内部操作而不是退出页面的情况。

This is documented on MSDN here.

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        if (...)
        {
            // don't want to exit the app in this case
            e.Cancel;
        }

        base.OnBackKeyPress(e);
    }

请注意确保不会使用后退键退出应用程序,否则您的应用程序可能无法通过Marketplace认证。

答案 1 :(得分:0)

protected virtual void OnNavigatingFrom(
    NavigatingCancelEventArgs e
)

在页面中覆盖OnNavigatingFrom 并做 e.Cancel = true

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
e.Cancel = true;
//Other code

}

http://msdn.microsoft.com/en-us/library/ms607458(vs.95

答案 2 :(得分:0)

你应该这样做:

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
 e.Cancel = MessageBox.Show("Exit?", "Page", MessageBoxButton.OKCancel) != 
 MessageBoxResult.OK;
 base.OnBackKeyPress(e);
}