public void RequestNavigate(string regionName, string viewName, string stateName) { if (_isInTransition) return; _isInTransition = true; if (string.IsNullOrEmpty(regionName)) throw new ArgumentNullException("regionName"); if (string.IsNullOrEmpty(viewName)) throw new ArgumentNullException("viewName"); INavigationRegion region = EnsureRegion(regionName); NavigationDescriptor descriptor = ActivateView(viewName, region); ViewState viewState = EnsureState(regionName, viewName, stateName, descriptor); OnNavigationStart(_previousDescriptor, descriptor, viewState); Presenter.TransitionCompleted -= OnTransitionCompleted; if (_previousDescriptor != null && _previousDescriptor.ViewName != descriptor.ViewName) { _targetDescriptor = descriptor; _sourceDescriptor = _previousDescriptor; _targetState = viewState; Presenter.TransitionCompleted += OnTransitionCompleted; Presenter.ApplyTransition(_previousDescriptor.ViewResolver(), descriptor.ViewResolver()); } else { PostTransition(); } _previousDescriptor = descriptor; }
public NavigationItemViewModel(NavigationDescriptor descriptor, string regionName) { _navigationDescriptor = descriptor; RegionName = regionName; _navigationService = ServiceLocator.Current.GetInstance<INavigationService>(); _navigationService.NavigationStart += OnNavigationStart; }
private void NotifyStateChanging(NavigationDescriptor descriptor, ViewState state) { if (descriptor.StateChanging != null) { descriptor.StateChanging(state); } }
public StateNavigationViewModel(ViewState viewState, NavigationDescriptor descriptor, string regionName) { _viewState = viewState; _descriptor = descriptor; _regionName = regionName; _navigationService = ServiceLocator.Current.GetInstance<INavigationService>(); _navigationService.NavigationStart += OnNavigationStart; }
public void Add(NavigationDescriptor descriptor) { _navigationViews.Add(descriptor); if (!descriptor.DelayLoad) { _activeNavigationViews.Add(descriptor); } }
private NavigationDescriptor ActivateView(string viewName, INavigationRegion region) { NavigationDescriptor descriptor = region.ActiveNavigationViews[viewName]; if (descriptor == null) { descriptor = region.Activate(viewName); } return(descriptor); }
private void OnNavigationCompleted(NavigationDescriptor sourceDescriptor, NavigationDescriptor targetDescriptor, ViewState targetState) { if (NavigationCompleted != null) { NavigationCompleted(this, new NavigationEventArgs(sourceDescriptor, targetDescriptor) { TargetState = targetState }); } }
public NavigationDescriptor Activate(string viewName) { NavigationDescriptor descriptor = _navigationViews[viewName]; if (descriptor == null) { throw new InvalidOperationException("View missing: " + viewName); } _activeNavigationViews.Add(descriptor); return(descriptor); }
private ViewState EnsureState( string regionName, string viewName, string stateName, NavigationDescriptor descriptor) { ViewState viewState = null; if (!string.IsNullOrEmpty(stateName)) { if (descriptor.States == null || (viewState = descriptor.States.SingleOrDefault(x => x.Name == stateName)) == null) { throw new InvalidOperationException( string.Format("{0}_{1}_{2} does not exist", regionName, viewName, stateName)); } } return(viewState); }
public void RequestNavigate(string regionName, string viewName, string stateName) { if (_isInTransition) { return; } _isInTransition = true; if (string.IsNullOrEmpty(regionName)) { throw new ArgumentNullException("regionName"); } if (string.IsNullOrEmpty(viewName)) { throw new ArgumentNullException("viewName"); } INavigationRegion region = EnsureRegion(regionName); NavigationDescriptor descriptor = ActivateView(viewName, region); ViewState viewState = EnsureState(regionName, viewName, stateName, descriptor); OnNavigationStart(_previousDescriptor, descriptor, viewState); Presenter.TransitionCompleted -= OnTransitionCompleted; if (_previousDescriptor != null && _previousDescriptor.ViewName != descriptor.ViewName) { _targetDescriptor = descriptor; _sourceDescriptor = _previousDescriptor; _targetState = viewState; Presenter.TransitionCompleted += OnTransitionCompleted; Presenter.ApplyTransition(_previousDescriptor.ViewResolver(), descriptor.ViewResolver()); } else { PostTransition(); } _previousDescriptor = descriptor; }
public NavigationEventArgs( NavigationDescriptor sourceDescriptor, NavigationDescriptor targetDescriptor) { SourceDescriptor = sourceDescriptor; TargetDescriptor = targetDescriptor; }
private void OnNavigationStart(NavigationDescriptor sourceDescriptor, NavigationDescriptor targetDescriptor, ViewState targetState) { if (NavigationStart != null) NavigationStart(this, new NavigationEventArgs(sourceDescriptor, targetDescriptor) { TargetState = targetState }); }
private void NotifyStateChanging(NavigationDescriptor descriptor, ViewState state) { if(descriptor.StateChanging != null) descriptor.StateChanging(state); }
private ViewState EnsureState( string regionName, string viewName, string stateName, NavigationDescriptor descriptor) { ViewState viewState = null; if (!string.IsNullOrEmpty(stateName)) { if (descriptor.States == null || (viewState = descriptor.States.SingleOrDefault(x => x.Name == stateName)) == null) { throw new InvalidOperationException( string.Format("{0}_{1}_{2} does not exist", regionName, viewName, stateName)); } } return viewState; }