У вас есть несколько вариантов:
- Вы можете создать
ValidationRule
подкласс (см. Ниже) и добавить его в свойство валидаторов Binding's
- Вы можете установить
ValidationCallback
для вашего связанного свойства, вызвать исключение, если значение неверно, и использовать этот метод для простого отображения ошибок проверки
- Вы можете создать вложенное свойство, которое регистрирует обработчик событий для свойства TextBox.TextChanged, и реализовать собственный механизм уведомления об ошибках проверки
- Вы можете использовать обычный TextBox с обработчиком TextBox_Changed в коде
- Вы можете обрабатывать PreviewKeyDown и PreviewTextInput из присоединенного свойства, как показано здесь
- Вы можете использовать замаскированное текстовое поле , как упомянуто Jan
Для произвольных регулярных выражений я обычно использовал бы встроенные в WPF функции проверки или выполнял проверку на связанном свойстве. Для особых нужд лучше использовать PreviewKeyDown / PreviewTextInput или замаскированное текстовое поле.
Вот как вы бы создали подкласс ValidationRule:
public class RegexValidationRule : ValidationRule
{
... // Declare Regex property and Message property
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if(Regex.IsMatch((string)value))
return ValidationResult.ValidResult;
else
return new ValidationResult(false, Message);
}
}