启动时WPF 4.5空TextBox验证

时间:2014-09-17 10:03:33

标签: wpf textbox .net-4.5 validationrule

我有一个带有验证规则的简单文本框,但在特殊情况下这是一种非常奇怪的行为。

如果我使用我的代码,并且我的属性为0(因为它来自db),它按预期工作。 TextBox在开始时获得红色边框。

<TextBox x:Name="TxtOfferNumber"
        IsReadOnly="{Binding SelectedOffer.IsValid}"
        GotKeyboardFocus="TxtOfferNumber_GotKeyboardFocus"
        GotMouseCapture="TxtOfferNumber_GotMouseCapture">
    <TextBox.Text>
        <Binding Path="OfferNumberLookup" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <validators:OfferNumberValidator ValidatesOnTargetUpdated="True"/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

我的验证规则:

   public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        return string.IsNullOrWhiteSpace(value as string) || Convert.ToInt32(value) != 0 ?
            ValidationResult.ValidResult :
            new ValidationResult(false, "Le numéro d'offre doit être informé!");
    }

问题是我想要这个字段,所以空是无效的。

我希望验证规则为:

   public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        return !string.IsNullOrWhiteSpace(value as string) && Convert.ToInt32(value) != 0 ?
            ValidationResult.ValidResult :
            new ValidationResult(false, "Le numéro d'offre doit être informé!");
    }

我头疼得厉害。验证函数返回正确的结果,但没有红色边框。如果我输入正确的值并更改为错误的值(空或0),现在我得到红色边框。

1 个答案:

答案 0 :(得分:0)

如果问题是TextBox在启动时没有得到验证,只有当输入发生变化时,一个快速而又脏的修复可能是将Text(或绑定属性)设置为正确的值,然后在加载期间出现错误