Как я могу получить правила проверки в WPF, чтобы огонь на пустое текстовое поле?
Я не могу получить WPF
ValidationRule
для обнаружения пустого TextBox
.Мой сокращенный код выглядит следующим образом:
public class NonEmptyStringValidator : ValidationRule { public override ValidationResult Validate( object value, CultureInfo cultureInfo ) { ValidationResult validationResult = new ValidationResult( false, "Value cannot be empty." ); if( value != null ) { string valueAsString = value as string; if( valueAsString.Length > 0 ) validationResult = ValidationResult.ValidResult; } return validationResult; } }
Мой сокращенный XAML выглядит следующим образом:
<TextBox <TextBox.Text> <Binding Path="SelectedUser.Username" UpdateSourceTrigger="LostFocus"> <Binding.ValidationRules> <u:NonEmptyStringValidator/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>
Точка останова, помещенная внутри
Validate()
функция показывает, что код не запускается до тех пор, пока в нем что-то не появится. TextBox
Есть ли способ заставить его работать, чтобы обнаружить пустую строку?Что я уже пробовал:
Я пробовал различные значения для
UpdateSourceTrigger
.Я также пытался зацепиться за
LostFocus
событие для TextBox
и написание кода для обработки этого вручную. Это становится очень грязным, потому что одна вещь, которую мне нужно сделать, - это сосредоточиться на TextBox
пока есть что-то в нем, и зовет Focus()
кажется, это вызывает LostFocus
событие, чтобы снова выстрелить, что-то еще, чего я не понимаю.