Here's the XAML code representing a TextBox used as input for the IdCard
  <TextBox.Text>
     <Binding Mode="TwoWay"
              Path="IdCardNumber"
              UpdateSourceTrigger="PropertyChanged">
                 <Binding.ValidationRules>
                    <v:AlphaNumValidationRule ValidationStep="UpdatedValue" />
                 </Binding.ValidationRules>
     </Binding>
  </TextBox.Text>
The validation :
public class AlphaNumValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        if (string.IsNullOrWhiteSpace((value ?? "").ToString()))
            return new ValidationResult(false, Resources.Strings.MessagesResource.RequiredField);
        else if (value.ToString().MatchRegex(RegexResource.ALPHANUMERIC))
            return new ValidationResult(true, null);
        else
            return new ValidationResult(false, Resources.Strings.MessagesResource.InvalidFormat);
    }
}
The ViewModel
    public override bool IsValid
    {
        get { return !string.IsNullOrWhiteSpace(IdCardNumber); }
    }
    private string idCardNumber;
    public string IdCardNumber
    {
        get { return idCardNumber; }
        set { Set(() => IdCardNumber, ref idCardNumber, value);
            RaisePropertyChanged("IsValid");
        }
    }
What I want to have is to update IsValid everytime the IdCard input is updated , I tried different ValidationStep but none do as I wish.
At first when loading the input for the first time IsValid is false , when typing a correct value it becomes true after deleting input and adding wrong non-supported values IsValid stays the same since it keeps the last correct value.
Any way to solve this ?
 
     
    