protected virtual void OnNavigating(object sender, NavigatingCancelEventArgs e)
{
var fe = frame.Content as FrameworkElement;
if (fe == null)
return;
var guard = fe.DataContext as IGuardClose;
if(guard != null && !e.Uri.IsAbsoluteUri)
{
bool shouldCancel = false;
guard.CanClose(result =>{
shouldCancel = !result;
});
if(shouldCancel)
{
e.Cancel = true;
return;
}
}
var deactivator = fe.DataContext as IDeactivate;
if (deactivator != null)
deactivator.Deactivate(e.Uri.IsAbsoluteUri);
}