I want to catch the NavigationService.Navigating event from my Page, to prevent the user from navigating forward. I have an event handler defined thusly:
void Pr
NavigationService.Navigate
triggers both a NavigationService.Navigating
event AND an Application.Navigating
event. I solved this problem with the following:
public class PageBase : Page
{
static PageBase()
{
Application.Current.Navigating += NavigationService_Navigating;
}
protected static void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
// put your event handler code here...
}
}
@Espo your link helped me find the workaround. I call it a workaround because it's ugly, but it's what MS themselves do in their documentation:
public MyPage() // ctor
{
InitializeComponent();
this.Loaded += delegate { NavigationService.Navigating += MyNavHandler; };
this.Unloaded += delegate { NavigationService.Navigating -= MyNavHandler; };
}
So you basically have to unsubscribe from the navigation service's events when your page is unloaded.
+1 to your response for helping me find it. I don't seem to be able to mark my own response as the "accepted answer" so I guess I'll leave it for now.