detect navigationwindow go back event

2019-09-04 11:18发布

问题:

how to determine when navigationwindow back button is pressed and trap that event to something extra. I am thinking of managing the page state.

回答1:

Add a handler to either NavigationWindow.Navigating or NavigationService.Navigating. In your handler:

void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
    if (e.NavigationMode == NavigationMode.Back) {
        e.Cancel = true;

        // TODO: whatever state management you're going to do
    }
}

The NavigatingCancelEventArgs contains all of the information about the navigation request you'll need to manage page state.



回答2:

The NavigationService provides a number of events you can subscribe to, if you want to control the navigation process:

  • Navigating, when the frame is about to navigate. Set Cancel to true to stop.
  • Navigated, when navigation has finished but before it is rendered
  • NavigationFailed, when something goes wrong
  • NavigationProgress, when chunks of a remote navigation call are being downloaded.
  • NavigationStopped, when the StopLoading method is called or a new Navigate request is made during downloading
  • LoadCompleted, when the page has been rendered