Рейтинг@Mail.ru

Проверка значений, вводимых в поле TextBox, в XAML

Print Friendly, PDF & Email

В 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>

Поблагодарить автора:

Поделиться

Print Friendly, PDF & Email