Проверка значений, вводимых в поле 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>
