在 Windows Phone 7 模拟器上,当按下硬件后退按钮时,默认行为是关闭当前应用程序。我想覆盖此默认行为,以便它导航到我的应用程序中的上一页。
经过一些研究,似乎应该可以通过重写 OnBackKeyPress 方法来做到这一点,如下所示:
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
// do some stuff ...
// cancel the navigation
e.Cancel = true;
}
但是,单击后退按钮仍然会关闭我的应用程序。在上述方法上放置断点表明它从未被调用。我的应用程序退出代码上有另一个断点,这个断点is hit.
我还需要做些什么来拦截后退按钮吗?
看来不可能重写 OnBackKeyPress 方法来拦截后退键,除非您使用Navigate
在应用程序的页面之间移动的方法。
我以前的导航方法是更改根视觉效果,例如:
App.Current.RootVisual = new MyPage();
这意味着我可以将所有页面保存在内存中,这样我就不需要缓存存储在它们上的数据(一些数据是通过网络收集的)。
现在看来我需要实际使用页面框架上的 Navigate 方法,这会创建我要导航到的页面的新实例。
(App.Current.RootVisual as PhoneApplicationFrame).Navigate(
new Uri("/MyPage.xaml", UriKind.Relative));
一旦我开始使用这种方法进行导航,我就可以按照我的问题中描述的方式覆盖后退按钮处理......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)