Pergunta

Estou usando o WPF e tenho uma entidade ligada a uma série de controles. A entidade é decorada com dois validadores de nível de classe da seguinte forma:

[ExampleValidator1, ExampleValidator2]
public class Entity

Uma entidade possui uma série de campos dos quais nem todos são mostrados, dependentes da seleção da caixa de combinação. Existe um validador para cada uma dessas seleções, se o "tipo" de entidade não corresponder a um validador específico de que o validador retornar TRUE e, obviamente, o validador correto validará os campos reais da seguinte forma:

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;
        }

E o XAML é o seguinte:

                <TextBox Grid.Row="0" Grid.Column="3">
                    <TextBox.Text>
                        <Binding Path="Entity.Name" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
                        </Binding>
                    </TextBox.Text>
                </TextBox>

Obviamente, recebo as boas dicas de belas caixas vermelhas e ferramentas informando os usuários dos requisitos de validação.

Meu problema é que, quando a seleção no ComboBox é alterada, o destaque vermelho persiste (se torna um pequeno quadrado vermelho quando um controle está oculto). Alguém poderia me direcionar da maneira certa, por favor!

Foi útil?

Solução

Resolvido disparando um OnPropertyChangs quando o ComboBox é alterado, não uma solução ideal, mas é viável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top