private void CurrentViewModel_ChangeScreen(IScreen screen, eTransitionType transitionType) { CurrentViewModel.ChangeScreen -= CurrentViewModel_ChangeScreen; if (CurrentViewModel is HomeViewModel) { (CurrentViewModel as HomeViewModel).ShowDialog -= CurrentViewModel_ShowDialog; } Transition = TransitionSelector.Get(transitionType); CurrentViewModel = screen; CurrentViewModel.ChangeScreen += CurrentViewModel_ChangeScreen; if (CurrentViewModel is HomeViewModel) { (CurrentViewModel as HomeViewModel).ShowDialog += CurrentViewModel_ShowDialog; } }
public static void SetTransitionSelector(DependencyObject target, TransitionSelector value) { target.SetValue(TransitionSelectorProperty, value); }
/// <summary> /// Starts the selected <see cref="Transition"/>. /// </summary> public void BeginTransition() { Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose, "TransitionElement - BeginTransition Entry"); Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose, "TransitionElement - effectiveContent using direct content"); object newContent = this.Content; ContentPresenter existingContentPresenter = this.NewContentPresenter; object oldContent = existingContentPresenter.Content; TransitionSelector transitionSelector = this.TransitionSelector; Transition transition = this.Transition; if (transitionSelector != null) { transition = transitionSelector.SelectTransition(oldContent, newContent); } bool transitioningToNullContent = newContent == null; bool transitioningFromNullContent = oldContent == null; Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose && transition != null, "TransitionElement - BeginTransition transition is set"); Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose && transition == null, "TransitionElement - BeginTransition transition is null"); bool shouldTransition = (transition != null) && (TransitionsEnabled) && (!SkipTransition(transition, existingContentPresenter, transitioningToNullContent, transitioningFromNullContent)); if (shouldTransition) { Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose, "TransitionElement - BeginTransition Swapping content presenters"); // Swap content presenters ContentPresenter temp = this._oldContentPresenter; this._oldContentPresenter = this._newContentPresenter; this._newContentPresenter = temp; } Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose, "TransitionElement - BeginTransition Updating current content presenter's content"); ContentPresenter newContentPresenter = this.NewContentPresenter; // Set the current content newContentPresenter.Content = newContent; newContentPresenter.ContentTemplate = this.ContentTemplate; newContentPresenter.ContentTemplateSelector = this.ContentTemplateSelector; if (shouldTransition) { ContentPresenter oldContentPresenter = this.OldContentPresenter; if (oldContent == null && this.NullContentTemplate != null) { oldContentPresenter.ContentTemplate = this.NullContentTemplate; } if (newContent == null && this.NullContentTemplate != null) { newContentPresenter.ContentTemplate = this.NullContentTemplate; } if (transition.IsNewContentTopmost) { this.Children.Add(this._newContentPresenter); } else { this.Children.Insert(0, this._newContentPresenter); } Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose, "TransitionElement - BeginTransition Setting up for transition"); this.IsTransitioning = true; this.activeTransition = transition; CoerceValue(TransitionProperty); CoerceValue(ClipToBoundsProperty); OnTransitionBeginning(new TransitionEventArgs(TransitionBeginningEvent, this, transition, oldContent, newContent)); Debug.WriteLineIf(TraceSwitches.Transitions.TraceVerbose, "TransitionElement - BeginTransition Calling transition's BeginTransition"); transition.BeginTransition(this, oldContentPresenter, newContentPresenter); } }