Problema com a validação do WPF (IDataErrorInfo) e a focagem de tabulação

Eu tenho um TextBox ligado a uma propriedade de um object que implementa IDataErrorInfo . Eu configurei o Validation.ErrorTemplate do TextBox e ele funciona bem. O problema é que eu tenho estes em um TabControl , eo modelo de validação não exibe mais se eu mudar a guia para outro e depois voltar para a guia inicial (onde o TextBox é). Parece que é validado (como o valor está correto), mas na verdade não é.

Este é o object IDataErrorInfo – observe que um valor “correto” é uma string com um tamanho de 2:

 public class Presenter : IDataErrorInfo { public Presenter() { this.Property = String.Empty; } public string Property { get; set; } public string Error { get { return null; } } public string this[string columnName] { get { if (columnName == "Property") { if (this.Property.Length == 2) return null; else return "Invalid property length!"; } else return null; } } } 

e este é o XAML:

                                   

Alguma idéia do que estou fazendo errado?

Os itens de guia tendem a atrapalhar os adornos (embora eu não saiba por quê, experimentei).

Eu poderia reproduzir seu problema.

Resolva isso envolvendo o conteúdo do TabItem com um AdornerDecorator.

Assim:

     ....    ...  

abas, expansores etc não funcionam bem com os validadores – você precisa include adornerdecorators ou não usar abas em todos os problemas com a validação do WPF (IDataErrorInfo) e com foco na guia

Eu tive problema com apenas primeiro (focado) guia estilo got e só aquele persistiu depois de mudar. Esta é a solução que acabei com (sem AdornerDecorator )

  

Baseado neste artigo: http://techqa.info/programming/question/1369643/wpf-error-styles-only-being-rendered-properly-on-visible-tab-of-a-tab-control