我有一个带有验证规则的简单文本框,但在特殊情况下这是一种非常奇怪的行为。
如果我使用我的代码,并且我的属性为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),现在我得到红色边框。
答案 0 :(得分:0)
如果问题是TextBox在启动时没有得到验证,只有当输入发生变化时,一个快速而又脏的修复可能是将Text(或绑定属性)设置为正确的值,然后在加载期间出现错误