void BeginSelect(object nextSelectedValue, bool fast)
        {
            isSelectCompleted          = false;
            nextSelectedValuePresenter = FindValuePresenter(nextSelectedValue);
            if (valuesPresentersInitialPositions == null)
            {
                FillValuesPresentersInitialPositionsList();
            }
            SetValuesPresentersHitTestVisibility(false);
            MoveToFore(nextSelectedValuePresenter);
            Point nextSelectedValuePresenterPosition = GetPosition(nextSelectedValuePresenter);

            nextSelectedValuePresenterSourceRelativePosition.X = nextSelectedValuePresenterPosition.X - centerPosition.X;
            nextSelectedValuePresenterSourceRelativePosition.Y = nextSelectedValuePresenterPosition.Y - centerPosition.Y;
            Point selectedValuePresenterInitialPosition = FindInitialPosition(selectedValuePresenter);

            selectedValuePresenterDestinationRelativePosition.X = selectedValuePresenterInitialPosition.X - centerPosition.X;
            selectedValuePresenterDestinationRelativePosition.Y = selectedValuePresenterInitialPosition.Y - centerPosition.Y;
#if SL
            VisualStateManager.GoToState(this, "TextIsCollapsed", true);
#endif
            if (!fast)
            {
                doSelectStoryboardCompletedHandled = false;
                Storyboard.SetTarget(DoSelectStoryboard, this);
                DoSelectStoryboard.Begin();
            }
            else
            {
                EndSelect();
            }
        }
 void EndSelect()
 {
     DoSelectStoryboard.Stop();
     SelectingProgress = 0.0;
     MoveToBack(nextSelectedValuePresenter);
     UpdateMovingValuesPresentersPosition(1.0);
     selectedValuePresenter = nextSelectedValuePresenter;
     isSelectCompleted      = true;
     SelectedValue          = selectedValuePresenter == null ? null : selectedValuePresenter.Content;
     BackgroundHelper.DoInBackground(null, delegate() {
         SetValuesPresentersHitTestVisibility(true);
     });
 }