private void UpdateVisualState(bool useTransitions) { if (useTransitions) { // If the Picker is scrolling stop it from moving, this is both // consistant with Metro and allows for attaching the animations // to the correct, in view items. ScrollViewer scrollViewer = Picker.GetVisualChildren().OfType <ScrollViewer>().FirstOrDefault(); if (scrollViewer != null) { scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset); } if (!IsOpen) { SetupListItems(0); } Storyboard mainBoard = new Storyboard(); Storyboard headerBoard = AnimationForElement(HeaderTitle, 0); mainBoard.Children.Add(headerBoard); for (int i = 0; i < _itemsToAnimate.Count; i++) { FrameworkElement element = (FrameworkElement)_itemsToAnimate[i].Target; Storyboard board = AnimationForElement(element, i + 1); mainBoard.Children.Add(board); } if (!IsOpen) { mainBoard.Completed += OnClosedStoryboardCompleted; } mainBoard.Begin(); } else if (!IsOpen) { OnClosedStoryboardCompleted(null, null); } }