Hvor oprettes valideringsfejl (validationerror) på en textbox i kode?
HejJeg er ny i C# og MVVM, så jeg er ret usikker på hvor i koden, jeg skal oprette en validering på en textbox som er target for input fra andre textboxe. Dvs. at der automatisk bliver beregnet en sum, men når summen går udenfor max- og min-værdier, skal der være en valideringsregel. Derfor bliver man nødt til at lave en valideringsregel i koden, der går direkte på den textbox.
Jeg har fået at vide at jeg kan bruge følgende stump kode fra denne side, (http://wpftutorial.net/ValidationErrorByCode.html)
men jeg ved bare ikke helt hvor jeg skal oprette den henne.
-----------------------------------------------
ValidationError validationError =
new ValidationError(regexValidationRule,
textBox.GetBindingExpression(TextBox.TextProperty));
validationError.ErrorContent = "This is not a valid e-mail address";
Validation.MarkInvalid(
textBox.GetBindingExpression(TextBox.TextProperty),
validationError);
-----------------------------------------------
Jeg har også lavet følgende validerings class, men den bliver kun vist når brugeren taster direkte i textbox. Jeg vil have reglen vist når resultatet af summen af tal-input fra de andre tekstboxe overstiger min- og max-værdier.
Håber jeg har forklaret det tydeligt nok. UI er forresten i XAML. På forhånd tak :-)
-----------------------------------------------
public class FIMRangeRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
if (value == null || string.IsNullOrEmpty(value.ToString()))
return new ValidationResult(false, "Feltet må ikke være tomt. Indtast gyldig værdi.");
else
{
if ((Int32.Parse(value.ToString()) < 18) || (Int32.Parse(value.ToString()) > 126))
return new ValidationResult
(false, "Værdi udenfor gyldig interval 18-126");
}
return ValidationResult.ValidResult;
}
}
-----------------------------------------------
Property
-----------------------------------------------
private int _FIMSamlet_score;
public int FIMSamlet_score
{
get { return this._FIMSamlet_score; }
set
{
if (Int32.Parse(value.ToString()) < 18 || Int32.Parse(value.ToString()) > 126)
{ throw new ArgumentException("The value must be between 18 and 126"); }
this._FIMSamlet_score = value;
this.OnPropertyChanged("FIMSamlet_score");
}
}
-----------------------------------------------