在我的WPF项目中,我已将验证添加到名为“地址”的字符串属性中,如下所示:
<TextBox Grid.Row="5" Grid.Column="1" Margin="5" Validation.ErrorTemplate="{StaticResource errorTemplateSilverlightStyle}">
<TextBox.Text>
<Binding Path="Address" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"
ValidatesOnNotifyDataErrors="True" NotifyOnValidationError="True">
<Binding.ValidationRules>
<vd:EmptyStringValidation ValidatesOnTargetUpdated="True" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
自定义验证规则EmptyStringValidation包含以下简单验证方法:
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if(String.IsNullOrWhiteSpace((string)value))
{
Debug.WriteLine("Its empty");
return new ValidationResult(false, "Field cannot be empty");
}
else
{
return new ValidationResult(true, null);
}
}
我的问题是,在启动项目时,地址文本框没有显示红色轮廓以指示存在错误。
我知道自定义空字符串规则 正在执行,因为我设置了一个调试,如果字符串为空则打印出来。
如果我在地址文本框中键入内容,然后将其删除,则保留空文本框,然后会出现红色轮廓。
如何让这个大纲在启动时出现,或者至少在“地址”文本框的标签上显示?
我正在使用MVVM编码模式,因此希望避免使用事件。