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