Avatar billede janepigen Nybegynder
06. januar 2015 - 22:38

Hvor oprettes valideringsfejl (validationerror) på en textbox i kode?

Hej

Jeg 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");
        }
    }
-----------------------------------------------
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester