Example #1
0
        /// <summary>
        /// 开始进行转换
        /// </summary>
        private void BeginTransition()
        {
            TransitionSelector selector = TransitionSelector;

            Transition transition = selector != null ?
                selector.SelectTransition(CurrentContentPresenter.Content, Content) :
                Transition;

            if (transition != null)
            {
                // Swap content presenters
                AdornerDecorator temp = _previousHost;
                _previousHost = _currentHost;
                _currentHost = temp;
            }

            ContentPresenter currentContent = CurrentContentPresenter;
            // Set the current content
            currentContent.Content = Content;
            currentContent.ContentTemplate = ContentTemplate;
            currentContent.ContentTemplateSelector = ContentTemplateSelector;

            if (transition != null)
            {
                ContentPresenter previousContent = PreviousContentPresenter;

                if (transition.IsNewContentTopmost)
                    Children.Add(_currentHost);
                else
                    Children.Insert(0, _currentHost);

                IsTransitioning = true;
                _activeTransition = transition;

                CoerceValue(TransitionProperty);
                CoerceValue(ClipToBoundsProperty);

                //使用指定转换器进行转换
                transition.BeginTransition(this, previousContent, currentContent);
            }
        }
Example #2
0
 public ListTransitionSelector(Transition forward, Transition backward, IList list)
 {
     _forward = forward;
     _backward = backward;
     _list = list;
 }
Example #3
0
        /// <summary>
        /// Clean up after the transition is complete
        /// </summary>
        /// <param name="transition"></param>
        internal void OnTransitionCompleted(Transition transition)
        {
            _children.Clear();
            _children.Add(_currentHost);
            _currentHost.Visibility = Visibility.Visible;
            _previousHost.Visibility = Visibility.Visible;
            ((ContentPresenter)_previousHost.Child).Content = null;

            IsTransitioning = false;
            _activeTransition = null;
            CoerceValue(TransitionProperty);
            CoerceValue(ClipToBoundsProperty);
            CoerceValue(ContentProperty);
        }