Executando validação em um objeto vinculado a dados após a atualização da propriedade

StackOverflow https://stackoverflow.com/questions/62686

Pergunta

Eu tenho um formulário básico com controles vinculados a um objeto que implementa o INotifyPropertyChanged interface.Eu gostaria de adicionar alguma validação a algumas propriedades, mas não quero implementar IDataErrorInfo para validar algumas propriedades.

Criei as funções que realizam a validação e retornam a mensagem de erro (se for o caso) no objeto.O que eu gostaria de fazer é chamar essas funções do meu formulário quando as propriedades relevantes do objeto forem alteradas e configurar o ErroProvedor controle em meu formulário com quaisquer mensagens de erro que foram retornadas das funções de validação.

Tentei conectar manipuladores de eventos aos eventos Validating e LostFocus, mas eles parecem disparar antes que meu objeto seja atualizado e, portanto, não estão validando os dados corretos.Somente quando saio da caixa de texto, volto e saio novamente é que a validação é executada nos dados corretos.

Existe outro evento ao qual eu possa me conectar para poder chamar essas funções de validação depois que a propriedade do meu objeto for atualizada?Ou será melhor apenas implementar o IDataErrorInfo interface?

Foi útil?

Solução

Não sei exatamente qual é o problema. Você está dizendo que não consegue definir a propriedade até que o controle perca o foco?

Nesse caso, você precisa definir a ligação para atualizar OnPropertyChanged em vez de OnValidation.

Vinculando a OnPropertyChanged significa que a ligação é atualizada imediatamente, enquanto OnValidation atualiza apenas o objeto subjacente quando uma validação é acionada (o que para a maioria dos controles ocorre quando eles perdem o foco).

Outras dicas

Acho que encontrei uma solução para o problema com a ajuda da postagem de Cameron.Alterei a ligação para atualizar OnPropertyChanged e agora, quando conecto o manipulador de eventos ao evento LostFocus, a validação está sendo executada no "novo" valor da caixa de texto, em vez do que foi mantido anteriormente no objeto

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