in src/BehaviorsSDKManaged/Microsoft.Xaml.Interactions/Core/DataTriggerBehavior.cs [92:148]
private static bool Compare(object leftOperand, ComparisonConditionType operatorType, object rightOperand)
{
if (leftOperand != null && rightOperand != null)
{
rightOperand = TypeConverterHelper.Convert(rightOperand.ToString(), leftOperand.GetType().FullName);
}
IComparable leftComparableOperand = leftOperand as IComparable;
IComparable rightComparableOperand = rightOperand as IComparable;
if ((leftComparableOperand != null) && (rightComparableOperand != null))
{
return DataTriggerBehavior.EvaluateComparable(leftComparableOperand, operatorType, rightComparableOperand);
}
switch (operatorType)
{
case ComparisonConditionType.Equal:
return object.Equals(leftOperand, rightOperand);
case ComparisonConditionType.NotEqual:
return !object.Equals(leftOperand, rightOperand);
case ComparisonConditionType.LessThan:
case ComparisonConditionType.LessThanOrEqual:
case ComparisonConditionType.GreaterThan:
case ComparisonConditionType.GreaterThanOrEqual:
{
if (leftComparableOperand == null && rightComparableOperand == null)
{
throw new ArgumentException(string.Format(
CultureInfo.CurrentCulture,
ResourceHelper.InvalidOperands,
leftOperand != null ? leftOperand.GetType().Name : "null",
rightOperand != null ? rightOperand.GetType().Name : "null",
operatorType.ToString()));
}
else if (leftComparableOperand == null)
{
throw new ArgumentException(string.Format(
CultureInfo.CurrentCulture,
ResourceHelper.InvalidLeftOperand,
leftOperand != null ? leftOperand.GetType().Name : "null",
operatorType.ToString()));
}
else
{
throw new ArgumentException(string.Format(
CultureInfo.CurrentCulture,
ResourceHelper.InvalidRightOperand,
rightOperand != null ? rightOperand.GetType().Name : "null",
operatorType.ToString()));
}
}
}
return false;
}