获取WPF控制';s验证状态
晚上好, 我有一个PhoneNumber类,其中电话号码的各个部分是分开的(区号、前缀、后缀),我通过长度和无效区号验证文本框。我想创建一个行为,当当前控件有效时,自动将选项卡切换到下一个控件。我可以通过绕过代码隐藏来硬编码该功能,但我更希望用户数据验证和行为能够始终如一地进行,并重用该功能 但是,我遇到了一个问题,试图获取TextBox控件的验证状态。你在哪里能找到?如果有办法获得该值,是否存在用于更改该值的关联事件 连接验证的控件样式获取WPF控制';s验证状态,wpf,validation,textbox,behavior,Wpf,Validation,Textbox,Behavior,晚上好, 我有一个PhoneNumber类,其中电话号码的各个部分是分开的(区号、前缀、后缀),我通过长度和无效区号验证文本框。我想创建一个行为,当当前控件有效时,自动将选项卡切换到下一个控件。我可以通过绕过代码隐藏来硬编码该功能,但我更希望用户数据验证和行为能够始终如一地进行,并重用该功能 但是,我遇到了一个问题,试图获取TextBox控件的验证状态。你在哪里能找到?如果有办法获得该值,是否存在用于更改该值的关联事件 连接验证的控件样式 显然,当控件应用了错误模板时,它就会出错。无论出于何
显然,当控件应用了错误模板时,它就会出错。无论出于何种原因,行为ErrorHandler都不会拾取它。查看
验证。HasError
附加属性。此外,还可以处理Validation.Error
事件
更新:
您可以订阅代码隐藏中的验证.Error
事件,如下所示:
Validation.AddErrorHandler(myTextBox, OnValidationError);
private void OnValidationError(object o, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
// on error added logic
}
else
{
// on error removed logic
}
}
在错误处理程序中,可以如下所示:
Validation.AddErrorHandler(myTextBox, OnValidationError);
private void OnValidationError(object o, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
// on error added logic
}
else
{
// on error removed logic
}
}
我可能遗漏了什么,我找不到验证。错误。我确实看到Validation.ErrorEvent,但这是一个路由事件,我的AddHandler语句告诉我ErrorEvent不是System.Windows.Controls.Validation.OK的事件,所以我实现了AddErrorHandler。我的控件现在正在验证,但是无论控件是否被验证,处理程序都不会被命中。如果有帮助,我将发布触发上述验证的样式。@CodeWarrior您必须将NotifyOnValidationError设置为true