0

我正在使用 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>

显然,我得到了漂亮的红色框和工具提示,告知用户验证要求。

我的问题是,当组合框中的选择发生变化时,红色突出显示仍然存在(当控件被隐藏时变成一个小的红色方块)。请有人以正确的方式指导我!

4

1 回答 1

0

通过在更改组合框时触发 OnPropertyChanged 来解决,这不是一个理想的解决方案,但它是可行的。

于 2009-09-28T15:10:01.830 回答