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 ); } }