我有一个带有验证规则的简单文本框,但在特殊情况下会出现非常奇怪的行为。
如果我使用我的代码,并且我的属性为 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),现在我得到红色边框。