在禁用的TextBox上禁用验证

时间:2014-08-18 00:06:42

标签: wpf

<Binding Path="AttachmentName" UpdateSourceTrigger="PropertyChanged">
                          <Binding.ValidationRules>
                                <valid:AttachmentNameValidationRule ValidationStep="RawProposedValue" ValidatesOnTargetUpdated="True"/>
                          </Binding.ValidationRules>
                    </Binding>

验证器检查输入的值是否格式正确:file.extension。不幸的是,当控件IsEnabled == false时,textBox为红色(因为内容为&#34;&#34;)。

知道如何禁用验证吗?用x:referense尝试了一些东西并将UIElement传递给验证器,但是没有用。

2 个答案:

答案 0 :(得分:3)

原始赠送金额归@jdoow的答案中的link

使用触发器很容易实现,当禁用控件时将Validation.ErrorTemplate设置为null。

该属性仍然有效,但用户未收到有关验证结果的通知。

<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
        </Trigger>
        <Trigger Property="IsEnabled" Value="True">
            <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ErrorTemplate}"/>
        </Trigger>
    </Style.Triggers>
</Style>

答案 1 :(得分:0)

您可以参考MS知识库中的来源。

Enabling And Disabling Validation based on IsEnabled Property