Вот код XAML, представляющий TextBox используется в качестве входных данных для IDcardWPF/MVVM Validation
<TextBox.Text>
<Binding Mode="TwoWay"
Path="IdCardNumber"
UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<v:AlphaNumValidationRule ValidationStep="UpdatedValue" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
проверки достоверности:
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);
}
}
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");
}
}
То, что я хочу должны обновлять IsValid каждый раз, когда обновляется вход IdCard, Я пробовал разные Validatio nStep, но никто не делает, как я желаю.
Сначала при загрузке ввода в первый раз IsValid является ложным, при вводе правильного значения он становится истинным после удаления ввода и добавления неправильных не поддерживаемых значений. IsValid остается неизменным, так как он сохраняет последнее правильное значение.
Любой способ решить эту проблему?
Вот мой пост, как использовать проверку: http://stackoverflow.com/questions/19539492/wpf-textbox-validation-c-sharp/37255232#37255232 –
@ Mr.BI хочет определенное поведение, как описано в мой пост для этой проверки –