Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
public class NavigationService : IDisposable
{
public NavigationService()
{
SystemNavigationManager.GetForCurrentView().BackRequested += this.OnBackRequested;
}
public event EventHandler<BackRequestedEventArgs> BackRequested;
public void Dispose()
{
SystemNavigationManager.GetForCurrentView().BackRequested -= this.OnBackRequested;
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
this.BackRequested?.Invoke(sender, e);
if (!e.Handled)
{
Debug.WriteLine("Back handled by navigation service");
e.Handled = true;
this.GoBack();
}
}
private void GoBack()
{
var rootFrame = Window.Current.Content as Frame;
if (rootFrame?.CanGoBack == true)
{
rootFrame.GoBack();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment