private void Transition(Storyboard aStoryboard, Storyboard bStoryboard) { if (m_AnimationElement == null || bStoryboard == null) return; bStoryboard.Stop(); // Give the target a unique name so we can find it later string name = Guid.NewGuid().ToString(); bStoryboard.SetTargetName(name); m_AnimationElement.Tag = name; bStoryboard.SetTarget(m_AnimationElement); foreach (Timeline animation in bStoryboard.Children) animation.SetTarget(m_AnimationElement); //m_AnimationElement.Visibility = Visibility.Visible; m_AnimationElement.UpdateLayout(); if (aStoryboard != null) { aStoryboard.Pause(); Duration duration = bStoryboard.Duration; TimeSpan timeSpan = aStoryboard.GetCurrentTime(); bStoryboard.Begin(); if (timeSpan.TotalMilliseconds != 0 && duration.HasTimeSpan) bStoryboard.Seek(duration.TimeSpan - timeSpan); } else bStoryboard.Begin(); }