Caliburn.Micro.FrameAdapter.OnNavigating C# (CSharp) Method

OnNavigating() protected method

Occurs before navigation
protected OnNavigating ( object sender, NavigatingCancelEventArgs e ) : void
sender object The event sender.
e Windows.UI.Xaml.Navigation.NavigatingCancelEventArgs The event args.
return void
        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);
        }