private static void OnTransitionPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var source = (TransitioningContentControl)d; var oldTransition = e.OldValue as string; var newTransition = e.NewValue as string; if (source.IsTransitioning) { source.AbortTransition(); } // find new transition Storyboard newStoryboard = source.GetStoryboard(newTransition); // unable to find the transition. if (newStoryboard == null) { // could be during initialization of xaml that presentationgroups was not yet defined if (VisualStates.TryGetVisualStateGroup(source, PresentationGroup) == null) { // will delay check source.CurrentTransition = null; } else { // revert to old value source.SetValue(TransitionProperty, oldTransition); throw new ArgumentException( string.Format(CultureInfo.CurrentCulture, "Temporary removed exception message", newTransition)); } } else { source.CurrentTransition = newStoryboard; } }