获取WPF控制';s验证状态

获取WPF控制';s验证状态,wpf,validation,textbox,behavior,Wpf,Validation,Textbox,Behavior,晚上好, 我有一个PhoneNumber类,其中电话号码的各个部分是分开的(区号、前缀、后缀),我通过长度和无效区号验证文本框。我想创建一个行为,当当前控件有效时,自动将选项卡切换到下一个控件。我可以通过绕过代码隐藏来硬编码该功能,但我更希望用户数据验证和行为能够始终如一地进行,并重用该功能 但是,我遇到了一个问题,试图获取TextBox控件的验证状态。你在哪里能找到?如果有办法获得该值,是否存在用于更改该值的关联事件 连接验证的控件样式 显然,当控件应用了错误模板时,它就会出错。无论出于何

晚上好,

我有一个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