Value Validators

Value Validators

Die Bibliothek implementiert ein Datentyp für Werte, die neben dem Wert selbst auch die Prüfregeln für diesen Wert enthält. Die Änderungen des Wertes werden dabei über INotifyPropertyChanged bekanntgegeben, so dass der Wert in MVVM-Anwendungen genutzt werden kann. Neben dem Wert werden auch die Änderungen an dem Zustand und den Fehlern mitverfolgt.

Die Idee zur Umsetzung (und die Basis) stammen aus dem Buch "Enterprise Application Patterns using Xamarin.Forms".

Umgesetzte Regeln zur Validierung

  • ContainsValidationRule
    Überprüfung, ob der Wert in der vorgegebene Auflistung vorkommt. Das Ergebnis der Prüfung kann auch negiert werden.
  • EmailValidationrule
    Überprüft, ob die Eingabe einer validen E-Mail-Adresse entspricht.
  • EqualValuesValidationRule
    Überprüft, ob der Wert einen anderen gleicht.
  • NullValidationRule
    Überprüft, ob der Wert null ist.
  • PhoneNumberValidationRule
    Überprüft, ob der Wert eine gültige Telefonnummer ist. Dabei sind folgende Zeichen, als Trennzeichen erlaubt: -, (), ..
  • RangeValidationRule / PrimitiveRangeValidationRule
    Überprüft, ob der Wert in einen vorgegebenen Bereich, zwischen den minimalen und maximalen Wert, liegt.
  • RegexValidationRule
    Überprüft, ob der Wert einen Regulären Ausdruck entspricht.
  • RequiredValidationRule
    Überprüft, dass ein Wert (string) eingegeben wurde (mit Leerzeichen Prüfung, falls eingestellt).
  • StringLengthValidationRule
    Prüft, ob der Wert eine maximale Länge überschreitet (oder minimale unterschreitet).
  • GreaterThanValidationRule
    Prüft, ob der Wert größer als ein Anderer (ValidatableValue) ist.
  • SmallerThanValidationRule
    Prüft, ob der Wert kleiner als ein Anderer (ValidatableValue) ist.
  • RevalidateOtherValueValidationRule
    Stoßt die Validierung eines anderen Wertes (ValidatableValue) an.

Installation

Install-Package WD.ValueValidators -Version 0.3.0

Verwendung

Um die Bibliothek nutzen zu können, muss das NuGet Package WD.ValueValidators installiert werden. Initialisieren Sie dann in Ihrem ViewModel die zu validierenden Werte mit den gewünschten Prüfungsregeln.

MyValidatableValue = new ValidatableValue<string>
{
    ValidationRules = new IValidationRule<string>[]
    {
        new ContainsValidationRule<string>("Value not allowed", new[] {"test", "example", "fake"}, true),
        new StringLengthValidationRule("The value should have at least 2 characters", 2, false),
        new StringLengthValidationRule("The value should have at maximum 16 charachters", 16),
        new RequiredValidationRule("Value is required")
    }
};

Nun kann der Wert mit Regeln in der Oberfläche (zum Beispiel in UWP, WPF oder Xamarin.Forms) genutzt werden, incl. Anzeige des aktuellen Fehlers.

<Label Text="My value:" />
<Entry Text="{Binding MyValidatableValue.Value}"
       BackgroundColor="{Binding MyValidatableValue.IsValid,
           Converter={StaticResource ValidationColorConverter}}"/>
<Label Text="{Binding MyValidatableValue.FirstError}"
       Style="{StaticResource ErrorMessage}" />