获取WPF Control的验证状态

时间:2011-02-06 03:43:24

标签: wpf validation textbox behavior

晚上好,

我有一个PhoneNumber类,其中电话号码的各个部分是分开的(区号,前缀,后缀),我按长度和无效区号验证文本框。我想创建一个行为,当当前的控件有效时,该行为会自动标记到下一个控件。我可以通过绕过来代码隐藏代码隐藏中的功能,但我更倾向于用户数据验证和行为来一致地执行它并重新使用该功能。

然而,我遇到了一个问题,试图让TextBox控件验证状态。你在哪里找到的?如果有办法获得该值,是否有相关的事件发生变化?

连接验证的控制样式

            <Style x:Key="ToolTipValidation" TargetType="{x:Type Control}">
                <Setter Property="Validation.ErrorTemplate" Value="{StaticResource StandardErrorValidationTemplate}"/>
                <Style.Triggers>
                    <Trigger Property="Validation.HasError" Value="True">
                        <Setter Property="ToolTip" Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}"/>
                    </Trigger>
                </Style.Triggers>
            </Style>

显然,当控件应用了错误模板时,它就会出错。无论出于何种原因,Behavior ErrorHandler都没有提起它。

1 个答案:

答案 0 :(得分:1)

查看Validation.HasError附加财产。您还可以处理Validation.Error事件。

<强>更新

您可以在代码隐藏中订阅Validation.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
    }           
}