ValidationRule mit Parameter oder DependencyProperty

  • WPF

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Akanel.

    ValidationRule mit Parameter oder DependencyProperty

    Hallo Ihr lieben,

    ich verwende in einem Projekt, einige ValidationRules, z.B. um nur numerische Eingaben zuzulassen, oder um eine maximale Eingabelänge von Zeichen in einer Textbox festzulegen. Jedoch ist die Eingabe auf mehrere Textboxen verteilt und je nachdem was eingegeben wird, z.B. der Straßenname, oder der Ansprechpartner (geht um Versand-sachen), sind die maximalen Eingabebeschränkungen unterschiedlich.

    Bislang löse ich das, in dem ich verschiedene ValidationRules, für verschiedene Textboxen anlege, was ich allerdings eher weniger elegant finde. Meine Idee hier wäre nun eine Stringlength-ValidationRule, der ich einfach per Parameter mitgeben kann, welche Zeichenlänge ich mit dieser erlauben möchte, meine bisherigen Googlesuchen spuckten aber nur aus, das man das nicht so ohne weiteres bewerkstelligen kann, hat von euch evtl. jemand eine Idee oder einen guten Ansatz wie ich das machen könnte? Oder muss ich tatsächlich viele verschiedene anlegen?


    Lieben Gruß und danke im voraus =)
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Ok, ok... ich hab den Wald vor lauter Bäumen nicht gesehen, alle betreffenden Links die ich fand bezogen sich auf Dynamische Werte via Binding. Da ich ja nur am Anfang bereits einen fixen Wert festlegen möchte, reicht ein stinknormales Property völlig aus.

    Funktioniert:

    VB.NET-Quellcode

    1. ​Imports System.Globalization
    2. Namespace ValidationRules
    3. Public Class StringLengthValidationRule
    4. Inherits ValidationRule
    5. Private _maxLength As Integer = 20
    6. Public Property MaxLength() As Integer
    7. Get
    8. Return _maxLength
    9. End Get
    10. Set(ByVal value As Integer)
    11. _maxLength = value
    12. End Set
    13. End Property
    14. Public Overrides Function Validate(value As Object, cultureInfo As CultureInfo) As ValidationResult
    15. If value.ToString.Length > MaxLength Then
    16. Return New ValidationResult(False, $"Dieses Feld ist auf max. {MaxLength} Zeichen beschränkt.")
    17. Else
    18. Return ValidationResult.ValidResult
    19. End If
    20. End Function
    21. End Class
    22. End Namespace
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Ich verwende diese ValidationRule in ca 12 Textboxen, jede davon hat unterschiedliche Längen, die ich zulassen kann oder will, durch eine Property, kann ich so ja einfach im Xaml bestimmen wie lang es denn sein darf, private würde ja heissen ich müsste es direkt in der ValidationRuleKlasse angeben oder ? dann wäre es ja wieder sinnfrei oder seh ich da was falsch ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If