private static VisualTransition FindTransition()

in src/Microsoft.Xaml.Behaviors/Core/ExtendedVisualStateManager.cs [701:738]


        private static VisualTransition FindTransition(VisualStateGroup group, VisualState previousState, VisualState state)
        {
            string previousStateName = (previousState != null ? previousState.Name : string.Empty);
            string stateName = (state != null ? state.Name : string.Empty);

            int bestMatchScore = -1;
            VisualTransition bestTransition = null;

            if (group.Transitions != null)
            {
                foreach (VisualTransition transition in group.Transitions)
                {
                    int matchScore = 0;
                    if (transition.From == previousStateName)
                    {
                        matchScore++;
                    }
                    else if (!string.IsNullOrEmpty(transition.From))
                    {
                        continue;
                    }
                    if (transition.To == stateName)
                    {
                        matchScore += 2;
                    }
                    else if (!string.IsNullOrEmpty(transition.To))
                    {
                        continue;
                    }
                    if (matchScore > bestMatchScore)
                    {
                        bestMatchScore = matchScore;
                        bestTransition = transition;
                    }
                }
            }
            return bestTransition;
        }