如何覆盖页面外的后退按钮?

时间:2014-02-17 21:42:10

标签: c# xaml windows-phone-7 windows-phone-8 windows-phone

我知道如何覆盖页面内的后退按钮:

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
   //Do your work here
   base.OnBackKeyPress(e);
}

但问题是:我使用Inneractive广告服务。当我打电话给InneractiveAd.DisplayAd()时,它会显示一个不支持后退按钮的新页面。当它导航到这个页面时,它的uri是这样的:

/Inneractive.Ad;component/InneractiveFullScreenPage.xaml

问题:是否可以覆盖该页面的后退按钮,以便在用户按下时返回?

1 个答案:

答案 0 :(得分:0)

在HandleBackKeyPress中,您通常会拦截BackKeyPress事件,因此您需要设置e.Cancel = true以阻止标准 BackKey导航。要模拟标准导航,您可以执行以下操作:

void HookUpBackKeyPress(PhoneApplicationPage page)
{
    page.BackKeyPress += HandleBackKeyPress;
}

void HandleBackKeyPress(object sender, CancelEventArgs e)
{
    page.NavigationService.GoBack();
}

问题是获取对导航页面的引用。以下代码仅在您完全导航到新页面后才起作用,并且在NavigationService.Navigate(..)

之后立即执行时可能不起作用
var frame = (PhoneApplicationFrame)Application.Current.RootVisual;
page = (PhoneApplicationPage)frame.Content;