使用 ValidationRule 验证 WPF 中的值会停止在文本框中设置值(如果它们不正确并保留最后一个正确的值)

Using ValidationRule to validate values in WPF is stopping setting values in textboxes if they are not correct and retaining the last correct value

我正在使用验证规则 class 来根据长度验证我的文本框值。它工作正常,如果它无效也会显示错误,但问题是如果用户正在编辑文本框,它不会存储值,甚至不会调用 set。

无论用户在文本框中输入什么值,我都希望得到这些值,无论它是否有效。有没有办法解决这个问题。

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            string valueToValidate = value as string;
            if ((MinLength > 0 || MaxLength >0) && (valueToValidate.Length < MinLength || valueToValidate.Length > MaxLength))
            { 
                return new ValidationResult(false, $"The field lentgh should be between: {MinLength}-{MaxLength} characters.");
            }
            else if(APIKeyLength>0 &&(valueToValidate.Length != APIKeyLength))
                return new ValidationResult(false, $"The field lentgh should be 36 characters");

            return new ValidationResult(true, null);
        }

而在 xml 中是这样的:

<Binding Path="ClientID" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
                    <Binding.ValidationRules>
                        <advancedConfigurationPage:ClientIDValidationRule MinLength="8" MaxLength="100"/>

ValidationRuleValidationStep 属性 设置为 UpdatedValue 将导致 运行 after来源 属性 已设置;

<advancedConfigurationPage:ClientIDValidationRule MinLength="8" MaxLength="100"
                                                  ValidationStep="UpdatedValue" />