Проверка значений, вводимых в поле TextBox, в XAML
В WPF имеется специальный стандартный механизм, позволяющий выполнять проверку (валидацию) данных, вводимых пользователем в текстовое поле TextBox. Этот механизм называется правилами проверки (validation rule). Для полей ввода, в которые введены недопустимые значения, в WPF даже определён свой стиль: красная рамка вокруг элемента TextBox. Конечно, его можно переопределить.
Чтобы воспользоваться стандартным валидатором, нужно выполнить три простых шага. Давайте рассмотрим их на таком примере: есть свойство MyProperty типа Integer, и его значение должно лежать в границах от 1 до 10.
1) Сначала создаём класс, который является наследником класса ValidationRule:
Namespace MyProject.Validators Public Class MyPropertyValidationRule Inherits ValidationRule Public Overrides Function Validate(value As Object, cultureInfo As CultureInfo) As ValidationResult Dim v As Integer If Integer.TryParse(value.ToString(), v) Then If (1 <= v) AndAlso (v <=10) Then Return New ValidationResult(True, Nothing) End If End If Return New ValidationResult(False, "Недопустимое значение свойства MyProperty.") End Function End Class End Namespace
2) Теперь в разделе пространств имён окна или страницы XAML объявляем пространство имён, в котором у нас будут валидаторы, например:
<Window ... xmlns:validators="clr-namespace:MyProject.Validators">
3) Далее в коде окна или страницы XAML для элемента, который нуждается в проверке, указываем этот валидатор:
<TextBox> <TextBox.Text> <Binding Path="MyProperty"> <Binding.ValidationRules> <validators:MyPropertyValidationRule /> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>