【发布时间】:2010-02-02 22:18:45
【问题描述】:
我试图弄清楚当发生验证错误时如何取消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 中进行所有验证的可能性。
【问题讨论】:
标签: wpf validation textbox