2014-02-17 62 views
0

我知道如何重寫後退按鈕頁面內:如何覆蓋頁面外的後退按鈕?

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

但問題:我用Inneractive廣告服務。當我打電話給InneractiveAd.DisplayAd()時,它會顯示一個不支持後退按鈕的新頁面。當導航到該頁面的URI是這樣的:

/Inneractive.Ad;component/InneractiveFullScreenPage.xaml 

問題:是它可以覆蓋回到該頁面的按鈕,當用戶按下回導航回?

+0

如果我明白你cerrectly要重寫InneractiveAd.DisplayAd()導航頁面的OnBackKeyPress可能無法正常工作並且它在Inneractive.Ad(你沒有源代碼)中有一個頁面,並且你不能重定向導航 - 那麼它可能很難實現(我認爲)。 – Romasz

回答

0

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