ValidationRule error only half working...
I have created a validation rule to validate that the value in a textbox is within a certain range.
Code:
class ValueValidationRule : ValidationRule
{
private int _min = 0;
private int _max = 0;
public ValueValidationRule(int min, int max)
{
_min = min;
_max = max;
}
public override ValidationResult Validate(object source, CultureInfo info)
{
int value = 0;
try
{
value = Convert.ToInt32(source);
if (value >= _min && value <= _max)
{
return ValidationResult.ValidResult;
}
else
{
return new ValidationResult(false, "out of range");
}
}
catch (Exception)
{
return new ValidationResult(false, "wrong format!");
}
}
}
When the value cannot be converted, the error "wrong format!" shows well. But when the value is out of range, even though I have put a break point that proves that the other invalid result ("out of range") is actually reached, it does not show as an error.
Here is the binding:
Code:
Binding testbind = new Binding();
testbind .Path = new PropertyPath("Value");
testbind .UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
testbind .ValidationRules.Add(new ValueValidationRule(1, 10));
testbind .NotifyOnValidationError = true;
testbind .TargetNullValue = 0;
codeBinding.SetBinding(TextBox.TextProperty, testbind);