public virtual bool Navigate(NavigatingCancelEventArgsBase args, IDataContext dataContext) { Should.NotBeNull(args, "args"); if (!args.IsCancelable) return false; var eventArgs = ((NavigatingCancelEventArgs)args); if (eventArgs.NavigationMode != NavigationMode.Back && eventArgs.Mapping != null) return Navigate(eventArgs.Mapping, eventArgs.Parameter, dataContext); var activity = PlatformExtensions.CurrentActivity; if (activity == null) return false; GoBack(); return activity.IsFinishing; }
bool INavigationService.Navigate(NavigatingCancelEventArgsBase args, IDataContext dataContext) { if (NavigateArgs == null) return false; return NavigateArgs(args); }
public virtual bool Navigate(NavigatingCancelEventArgsBase args, IDataContext dataContext) { Should.NotBeNull(args, nameof(args)); if (!args.IsCancelable) return false; var eventArgs = (NavigatingCancelEventArgs)args; if (eventArgs.NavigationMode == NavigationMode.Back) return GoBackInternal(); // ReSharper disable once AssignNullToNotNullAttribute return Navigate(eventArgs.Mapping, eventArgs.Parameter, dataContext); }
private bool NavigateInternal(NavigatingCancelEventArgsBase args) { if (!args.IsCancelable) return false; NavigatingCancelEventArgs originalArgs = ((NavigatingCancelEventArgsWrapper)args).Args; if (originalArgs.NavigationMode == NavigationMode.Back) { _frame.GoBack(); return true; } return _frame.Navigate(originalArgs.Uri); }
public virtual void OnNavigating(NavigatingCancelEventArgsBase e) { EventHandler<INavigationService, NavigatingCancelEventArgsBase> handler = Navigating; if (handler != null) handler(this, e); }
public virtual bool Navigate(NavigatingCancelEventArgsBase args, IDataContext context) { Should.NotBeNull(args, nameof(args)); if (!args.IsCancelable) return false; var eventArgs = (NavigatingCancelEventArgs)args; //Back button pressed. if (eventArgs.IsBackButtonNavigation && XamarinFormsExtensions.SendBackButtonPressed != null) { var sendBackButton = XamarinFormsExtensions.SendBackButtonPressed(CurrentContent as Page); if (sendBackButton != null) { RaiseNavigated(null, null, NavigationMode.Back); sendBackButton(); return true; } } if (eventArgs.NavigationMode == NavigationMode.Back) { GoBack(); return true; } // ReSharper disable once AssignNullToNotNullAttribute return Navigate(eventArgs.Mapping, eventArgs.Parameter, context); }
private bool NavigateInternal(NavigatingCancelEventArgsBase args) { if (!args.IsCancelable) return false; var wrapper = (NavigatingCancelEventArgsWrapper)args; if (wrapper.Args.NavigationMode == NavigationMode.Back) { _frame.GoBack(); return true; } return Navigate(wrapper.Args.SourcePageType, wrapper.Parameter, null); }
protected virtual INavigationContext CreateContextNavigateFrom(IViewModel viewModelFrom, NavigatingCancelEventArgsBase args) { string idOperation; GetViewModelTypeFromParameter(NavigationService.GetParameterFromArgs(args), out idOperation); return new NavigationContext(NavigationType.Page, args.NavigationMode, viewModelFrom, idOperation == _currentOperationId ? _navigationTargetVm : null, this) { {NavigatingCancelArgsConstant, args}, {OperationIdConstant, idOperation} }; }
private void Renavigate(IViewModel currentViewModel, [NotNull] INavigationContext context, NavigatingCancelEventArgsBase args) { if (CurrentContent != null) TryCacheViewModel(context, CurrentContent, currentViewModel); if (_navigatingCancelArgs == null) { if (NavigationService.Navigate(args, _lastContext)) ClearCacheIfNeed(_lastContext ?? DataContext.Empty, _navigationTargetVm); else CancelCurrentNavigation(context); } else _navigatingCancelArgs.Cancel = false; }
public bool Navigate(NavigatingCancelEventArgsBase args, IDataContext dataContext) { Should.NotBeNull(args, "args"); if (args is BackButtonNavigatingEventArgs) { var application = Application.Current; if (application == null) return false; RaiseNavigated(BackButtonNavigationEventArgs.Instance); application.Exit(); return true; } var result = NavigateInternal(args); if (result) ClearNavigationStackIfNeed(dataContext); return result; }
/// <summary> /// Subscriber to the Navigating event. /// </summary> protected virtual void NavigationServiceOnNavigating(object sender, NavigatingCancelEventArgsBase args) { try { _navigatingCancelArgs = args; OnNavigating(args); } finally { _navigatingCancelArgs = null; } }
/// <summary> /// Navigates using cancel event args. /// </summary> public bool Navigate(NavigatingCancelEventArgsBase args, IDataContext context) { Should.NotBeNull(args, "args"); if (!args.IsCancelable) return false; if (args.NavigationMode == NavigationMode.Back) { GoBack(); return true; } var eventArgs = ((NavigatingCancelEventArgs)args); // ReSharper disable once AssignNullToNotNullAttribute return Navigate(eventArgs.Mapping, eventArgs.Parameter, context); }
public bool Navigate(NavigatingCancelEventArgsBase args, IDataContext dataContext) { Should.NotBeNull(args, nameof(args)); #if WINDOWS_PHONE if (args is BackButtonNavigatingEventArgs) { var application = Application.Current; if (application == null) return false; RaiseNavigated(BackButtonNavigationEventArgs.Instance); application.Terminate(); return true; } #endif bool result = NavigateInternal(args); if (result) ClearNavigationStackIfNeed(dataContext); return result; }
/// <summary> /// Navigates using cancel event args. /// </summary> public bool Navigate(NavigatingCancelEventArgsBase args, IDataContext context) { Should.NotBeNull(args, "args"); if (!args.IsCancelable) return false; var eventArgs = ((NavigatingCancelEventArgs)args); if (eventArgs.IsBackButtonNavigation && SendBackButtonPressed != null) return SendBackButtonPressed(CurrentContent as Page); if (eventArgs.NavigationMode == NavigationMode.Back) { GoBack(); return true; } // ReSharper disable once AssignNullToNotNullAttribute return Navigate(eventArgs.Mapping, eventArgs.Parameter, context); }
/// <summary> /// Navigates using cancel event args. /// </summary> public bool Navigate(NavigatingCancelEventArgsBase args, IDataContext dataContext) { Should.NotBeNull(args, "args"); var result = NavigateInternal(args); if (result) ClearNavigationStackIfNeed(dataContext); return result; }
private void OnNavigating(NavigatingCancelEventArgsBase args) { if (_ignoreNavigating) return; var currentViewModel = CurrentViewModel; if (currentViewModel == null) return; try { _closingViewModel = currentViewModel; args.Cancel = true; var context = CreateContextNavigateFrom(currentViewModel, args); var navigateTask = (_closedFromViewModel || !args.IsCancelable) ? Empty.TrueTask : OnNavigatingFrom(currentViewModel, context); var t = navigateTask.TryExecuteSynchronously(task => { if (!task.IsCanceled && task.IsFaulted) { _closingViewModel = null; var callback = _currentCallback; if (callback != null) { callback.Invoke(OperationResult.CreateErrorResult<bool?>(OperationType.PageNavigation, currentViewModel, task.Exception, context)); _currentCallback = null; } return; } if (task.IsCanceled || !task.Result) { _closingViewModel = null; CancelCurrentNavigation(context); return; } ThreadManager.InvokeOnUiThreadAsync(() => { try { _ignoreNavigating = true; Renavigate(currentViewModel, context, args); } finally { _closingViewModel = null; _ignoreNavigating = false; } }); }); t.WithTaskExceptionHandler(this); } catch (Exception) { _closingViewModel = null; throw; } }
private bool NavigateInternal(NavigatingCancelEventArgsBase args) { if (!args.IsCancelable) return false; NavigatingCancelEventArgs originalArgs = ((NavigatingCancelEventArgsWrapper)args).Args; if (originalArgs.NavigationMode == NavigationMode.Back) { _frame.GoBack(); return true; } if (_useUrlNavigation) { if (originalArgs.ExtraData == null) return _frame.Navigate(originalArgs.Uri); return _frame.Navigate(originalArgs.Uri, originalArgs.ExtraData); } if (originalArgs.ExtraData == null) return _frame.Navigate(originalArgs.Content); return _frame.Navigate(originalArgs.Content, originalArgs.ExtraData); }
protected virtual INavigationContext CreateContextNavigateFrom(IViewModel viewModelFrom, NavigatingCancelEventArgsBase args) { string idOperation; GetViewModelTypeFromParameter(NavigationService.GetParameterFromArgs(args), out idOperation); var viewModelTo = idOperation == _currentOperationId ? _navigationTargetVm : null; if (viewModelTo == null && viewModelFrom != null && args.NavigationMode == NavigationMode.Back) viewModelTo = viewModelFrom.GetParentViewModel(); return new NavigationContext(NavigationType.Page, args.NavigationMode, viewModelFrom, viewModelTo, this) { {NavigationProviderConstants.NavigatingCancelArgs, args}, {NavigationProviderConstants.OperationId, idOperation} }; }