我正在使用 WPF,并且我有一个绑定到一系列控件的实体。该实体装饰有两个类级别的验证器,如下所示:
[ExampleValidator1, ExampleValidator2]
public class Entity
实体有一系列字段,并非总是显示所有字段,具体取决于从组合框中的选择。每个选择都存在一个验证器,如果实体的“类型”与验证器返回 true 的特定验证器不匹配,并且显然正确的验证器将验证实际字段,如下所示:
public bool IsValid(object value, IConstraintValidatorContext constraintValidatorContext)
{
constraintValidatorContext.DisableDefaultError();
var allPropertiesValid = true;
var entity= (Entity)value;
if (supplier.ParticularEntityType)
{
return true;
}
if (String.IsNullOrEmpty(entity.Name) || entity.Name.Length > 50)
{
constraintValidatorContext.AddInvalid<Entity, string>("must be 50 or shorter and not empty", x => x.Name);
allPropertiesValid = false;
}
XAML如下:
<TextBox Grid.Row="0" Grid.Column="3">
<TextBox.Text>
<Binding Path="Entity.Name" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
</Binding>
</TextBox.Text>
</TextBox>
显然,我得到了漂亮的红色框和工具提示,告知用户验证要求。
我的问题是,当组合框中的选择发生变化时,红色突出显示仍然存在(当控件被隐藏时变成一个小的红色方块)。请有人以正确的方式指导我!