Я пытаюсь выяснить, как отменить ввод пользователя в TextBox
, когда происходит ошибка проверки. Если пользователь пытается ввести недопустимый символ, я бы хотел запретить его добавление в TextBox
.
.
Как добавить или изменить приведенный ниже код, чтобы TextBox
не мог принимать недопустимые символы? Возможно ли это без прослушивания события TextBox.TextChanged
?
Мой TextBox
выглядит так:
<TextBox Validation.Error="OnSomeTextBoxValidationError">
<TextBox.Text>
<Binding Path="Value" NotifyOnValidationError="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:SomeValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Мое пользовательское правило проверки выглядит так:
public class SomeValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string hex_string = value as string;
Match invalid_chars = Regex.Match(hex_string, "[^0-9a-fA-F]");
bool is_valid = (invalid_chars.Success == false);
string error_context = null;
if (is_valid == false)
{
error_context = "Invalid characters";
}
return new ValidationResult(is_valid, error_context);
}
}
У меня есть обработчик ошибок ... я могу с ним что-нибудь сделать?
private void OnSomeTextBoxValidationError(object sender, ValidationErrorEventArgs e)
{
// Can I do anything here?
}
Пожалуйста, предоставьте оригинальный ответ, если это возможно, вместо ссылки на URL. Я прочитал много возможных решений, связанных с обработчиками событий, но я не встречал никого, кто бы обсуждал возможность выполнения всей моей проверки в ValidationRule
.