in src/BehaviorsSDKManaged/Microsoft.Xaml.Interactions/Core/DataTriggerBehavior.cs [153:197]
private static bool EvaluateComparable(IComparable leftOperand, ComparisonConditionType operatorType, IComparable rightOperand)
{
object convertedOperand = null;
try
{
convertedOperand = Convert.ChangeType(rightOperand, leftOperand.GetType(), CultureInfo.CurrentCulture);
}
catch (FormatException)
{
// FormatException: Convert.ChangeType("hello", typeof(double), ...);
}
catch (InvalidCastException)
{
// InvalidCastException: Convert.ChangeType(4.0d, typeof(Rectangle), ...);
}
if (convertedOperand == null)
{
return operatorType == ComparisonConditionType.NotEqual;
}
int comparison = leftOperand.CompareTo((IComparable)convertedOperand);
switch (operatorType)
{
case ComparisonConditionType.Equal:
return comparison == 0;
case ComparisonConditionType.NotEqual:
return comparison != 0;
case ComparisonConditionType.LessThan:
return comparison < 0;
case ComparisonConditionType.LessThanOrEqual:
return comparison <= 0;
case ComparisonConditionType.GreaterThan:
return comparison > 0;
case ComparisonConditionType.GreaterThanOrEqual:
return comparison >= 0;
}
return false;
}