WPF 4.5启动时的空文本框验证

WPF 4.5启动时的空文本框验证,wpf,textbox,.net-4.5,validationrule,Wpf,Textbox,.net 4.5,Validationrule,我有一个带有验证规则的简单文本框,但在特殊情况下有一个非常奇怪的行为 如果我这样使用我的代码,并且我的属性是0,因为它来自db,那么它将按预期工作。文本框在开始时获得其红色边框 问题是我希望这个字段是必需的,所以空是无效的 我希望我的验证规则是: 还有我的头痛。验证函数返回正确的结果,但没有红色边框。如果我输入正确的值并更改为错误的空值或0,现在我会得到红色边框。如果问题是文本框在启动时没有生效,则只有在输入更改时,快速而肮脏的修复方法可能是在加载期间将文本或绑定属性设置为正确的值,然后设置为错

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

如果我这样使用我的代码,并且我的属性是0,因为它来自db,那么它将按预期工作。文本框在开始时获得其红色边框

问题是我希望这个字段是必需的,所以空是无效的

我希望我的验证规则是:


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

如果问题是文本框在启动时没有生效,则只有在输入更改时,快速而肮脏的修复方法可能是在加载期间将文本或绑定属性设置为正确的值,然后设置为错误的值。

如果要检查空字符串,也可以使用string.IsNullorEmpty。我确实尝试过此方法,但我想我尝试了错误的方法。再试一次,效果如预期。真的希望找到一个正确的方法来做这件事。我们可以说这是WPF中的一个bug吗?哦,对不起。忘了礼貌。非常感谢你。
<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é!");
    }