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