WP7知道何时在"导航到"页面中按下后退键

Jon*_*nna 4 windows windows-phone-7

在Windows Phone 7中,有没有办法知道在导航到的页面中是否按下了背面?我知道我们可以拦截当前页面,但我需要知道在我导航到的页面中.即如果有2页说第1页和第2页,则在第2页按下后退按钮.我需要知道第1页是否按下了后退按钮.我需要在第1页的后退按钮上运行一些东西.

小智 25

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (e.NavigationMode == System.Windows.Navigation.NavigationMode.Back)
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 调用NavigationService.GoBack()时,此NavigationMode也将为true.如果您只想要硬件印刷机,请使用接受的答案. (2认同)

Pra*_*ian 5

这是一种黑客,但你可以做到以下几点; 覆盖OnBackkeyPress每个页面上的事件.在事件处理程序中添加以下代码:

PhoneApplicationService.Current.State["isbacknav"] = true;
Run Code Online (Sandbox Code Playgroud)

然后,在OnNavigatedTo每个页面的事件处理程序中,检查State字典是否包含该条目.

bool isbacknav = false;
if( PhoneApplicationService.Current.State.ContainsKey( "isbacknav" ) ) {
   isbacknav = (bool)PhoneApplicationService.Current.State["isbacknav"];

   PhoneApplicationService.Current.State["isbacknav"] = false;
   // or
   // PhoneApplicationService.Current.State.Remove( "isbacknav" );
}
Run Code Online (Sandbox Code Playgroud)