示例#1
0
partial             void Enter_Transitioning(BaseState previousState)
            {
                var nextOpacity = 1.0;
                switch (PresentOption)
                {
                    case Option.Fade:
                        nextOpacity = 0;
                        break;
                    case Option.PushFromLeft:
                    case Option.PushFromRight:
                    case Option.PushFromTop:
                    case Option.PushFromBottom:
                        NextOffset_Start        = GetOffset();
                        PreviousOffset_End      = -NextOffset_Start;
                        break;
                    case Option.CoverFromLeft:
                    case Option.CoverFromRight:
                    case Option.CoverFromTop:
                    case Option.CoverFromBottom:
                        NextOffset_Start        = GetOffset();
                        break;
                    case Option.RevealToLeft:
                    case Option.RevealToRight:
                    case Option.RevealToTop:
                    case Option.RevealToBottom:
                        PreviousOffset_End      = -GetOffset();
                        break;
                    default:
                    case Option.Instant:
                        break;
                }

                PreviousTransform               = PreviousOffset_Start.ToTranslateTransform();
                NextTransform                   = NextOffset_Start.ToTranslateTransform();

                Owner.m_current.Opacity         = 1                     ;
                Owner.m_current.RenderTransform = PreviousTransform     ;
                Owner.m_current.IsHitTestVisible= false                 ;

                Owner.m_next.Opacity            = nextOpacity           ;
                Owner.m_next.RenderTransform    = NextTransform         ;
                Owner.m_next.IsHitTestVisible   = false                 ;

                Owner.m_next.Child  = Next;

                switch (PresentOption)
                {
                    case Option.RevealToLeft:
                    case Option.RevealToRight:
                    case Option.RevealToTop:
                    case Option.RevealToBottom:
                        Owner.m_panel.Children.Insert(0, Owner.m_next);
                        break;
                    case Option.Instant:
                    case Option.Fade:
                    case Option.PushFromLeft:
                    case Option.PushFromRight:
                    case Option.PushFromTop:
                    case Option.PushFromBottom:
                    case Option.CoverFromLeft:
                    case Option.CoverFromRight:
                    case Option.CoverFromTop:
                    case Option.CoverFromBottom:
                    default:
                        Owner.m_panel.Children.Add(Owner.m_next);
                        break;
                }

                if (PresentOption != Option.Instant)
                {
                    Owner.Dispatcher.Async_Invoke (
                        "AnimatedEntrance: Awaiting measure/arrange before starting animation",
                        StartAnimation
                        );
                }
                else
                {
                    Owner.Dispatcher.Async_Invoke(
                        "AnimatedEntrance: Switching to next control instantly",
                        ShowInstant
                        );
                }
            }