【问题标题】:How to override back button for a page outside of it?如何覆盖其外部页面的后退按钮?
【发布时间】:2014-02-17 21:42:10
【问题描述】:

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

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

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

/Inneractive.Ad;component/InneractiveFullScreenPage.xaml

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

【问题讨论】:

  • 如果我完全理解您想要覆盖 InneractiveAd.DisplayAd() 导航的页面的 OnBackKeyPress 并且它是 Inneractive.Ad 中某处的页面(您没有源代码),而且你不能重定向导航 - 那么它可能很难实现(我认为)。

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


【解决方案1】:

在 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 2015-01-15
    • 2018-05-03
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    相关资源
    最近更新 更多