WPF - FindName retorna nulo quando não deve

FindName está quebrado para mim :(

Se você é especialista em tais coisas, eu adoraria alguma ajuda.

O objeto que estou procurando está lá. Eu tenho provas.

Aqui está o cenário:

ToggleButton button = (ToggleButton)sender;
Popup popup = (Popup)button.FindName("popSelectIteration");

popup é nulo, mas nem sempre. Só às vezes. Mas mesmo quando definido como nulo, o filho que estou procurando está lá.

Coloquei um ponto de interrupção quando era nulo e peguei essas duas capturas de tela.

É onde FindName está retornando nulo para "popSelectIteration":

texto alternativo http://img175.imageshack.us/img175/2055/popupisnull.png

Mas se você olhar o relógio, verá que a criança está lá:

texto alternativo http://img708.imageshack.us/img708/8757/watchwithpopupnull.png

Então o que estou perdendo? Por que o FindName não o encontra? Como você pode ver na captura de tela, esse não é um problema de tempo (o relógio FindName é nulo, mas o caminho direto é bom).

Existe uma maneira melhor de encontrar um controle?

Nota: Se você estiver interessado no botão de alternância em XAML do XAML, ele pode ser encontrado nesta pergunta:WPF - FrameworkElement - enumera todos os decendentes?.

Atualizar: Fiz algumas pesquisas para ver por que isso falha algumas vezes e outras vezes funciona. Eu tenho uma animação que chamaNameScope.SetNameScope((DependencyObject)form, new NameScope()); (Código completo do métodoaqui) Logo após essa chamada, o FindName começa a falhar.

Eu realmente não entendo essa ligação. Acho que copiei e colei o código. Enfim, eu comentei. Mas eu adoraria saber por que isso está falhando.

questionAnswers(6)

yourAnswerToTheQuestion