Как я могу установить регулярное выражение на TextBox? - PullRequest
5 голосов
/ 14 ноября 2009

Как установить регулярное выражение для WPF TextBox? Я хочу, чтобы текстовое поле принимало ввод в некотором предопределенном формате. Возможно ли это?

Ответы [ 2 ]

7 голосов
/ 14 ноября 2009

У вас есть несколько вариантов:

  • Вы можете создать 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);
  }
}
0 голосов
/ 14 ноября 2009

Либо вы можете проверить измененное событие, либо использовать то, что называется замаскированным текстовым полем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...