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

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

我的问题是,当在组合框的选择改变时,红色高亮显示仍然存在(变为小红色正方形时的控制是隐藏的)。 可能有人告诉我正确的方式请!

有帮助吗?

解决方案

通过在组合框被改变,而不是一个理想的解决方案,但发射了OnPropertyChanged解决其可行的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top