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 Wertnull
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}" />