Validation

  • WPF

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von sandiro.

    Moin,

    ich versuch gerade die Eingabe in eine Textbox zu validieren.
    Dazu habe ich folgende ValidationRule:

    C#-Quellcode

    1. ​class RegExValidator :ValidationRule{
    2. private String regex;
    3. private String errorMessage;
    4. public RegExValidator() {
    5. }
    6. public override ValidationResult Validate(object value, CultureInfo cultureInfo) {
    7. if (Regex.IsMatch(value as String, RegEx)) {
    8. return new ValidationResult(true, null);
    9. } else {
    10. return new ValidationResult(false, ErrorMessage);
    11. }
    12. }
    13. public String RegEx {
    14. get {
    15. return regex;
    16. }
    17. set {
    18. regex = value;
    19. }
    20. }
    21. public String ErrorMessage {
    22. get {
    23. return errorMessage;
    24. }
    25. set {
    26. errorMessage = value;
    27. }
    28. }
    29. }


    und folgendes im XAML

    XML-Quellcode

    1. ​<Window.Resources>
    2. <ControlTemplate x:Key="validationTemplate">
    3. <DockPanel >
    4. <TextBlock Margin="0 0 5 0" Text="!" FontSize="14" FontWeight="Bold" Foreground="Red"/>
    5. <AdornedElementPlaceholder x:Name="adornedElement"/>
    6. </DockPanel>
    7. </ControlTemplate>
    8. </Window.Resources>
    9. <Grid Margin="10">
    10. <Grid.ColumnDefinitions>
    11. <ColumnDefinition Width="100" />
    12. <ColumnDefinition Width="10" />
    13. <ColumnDefinition Width="250" />
    14. <ColumnDefinition Width="*" />
    15. </Grid.ColumnDefinitions>
    16. <Grid.RowDefinitions>
    17. <RowDefinition Height="100" />
    18. <RowDefinition Height="*" />
    19. </Grid.RowDefinitions>
    20. <Label Grid.Row="5" Grid.Column="0" Content="Anzahl" Style="{StaticResource labelStyle}"/>
    21. <TextBox Grid.Row="5" Grid.Column="2" Validation.ErrorTemplate="{StaticResource validationTemplate}" Width="100" Height="20">
    22. <!--Style="{StaticResource textboxStyle}"-->
    23. <Binding Path="Anzahl" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource BarcodeGeneratorViewModel}">
    24. <Binding.ValidationRules>
    25. <v:RegExValidator RegEx="^[0-9]*$" ErrorMessage="Das Feld darf nur Zahlen enthalten." ValidationStep="RawProposedValue"/>
    26. </Binding.ValidationRules>
    27. </Binding>
    28. </TextBox>
    29. </Grid>


    Im Debugger kann ich einen Haltepunkt auf die ValidationRule setzen, der wird auch erreicht, ich sehe nur nichts in meinem Window.

    Warum?? ?(

    Gruß
    HamburgerJungeJr

    P.S. Anzahl ist eine String-Property