Пример #1
0
        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;
            }
        }
Пример #2
0
 public static void SetTransitionSelector(DependencyObject target, TransitionSelector value)
 {
     target.SetValue(TransitionSelectorProperty, value);
 }
Пример #3
0
        /// <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);
            }
        }