WPF - FindName Возвращает ноль, когда это не должно

FindName сломан для меня :(

Если вы являетесь экспертом в таких вещах, я хотел бы помочь.

Объект, который я ищу, находится там. У меня есть доказательство.

Вот сценарий:

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

popup Нуль, но не всегда. Просто иногда. Но даже когда он установлен, чтобы обнулить ребенка, которого я ищу, есть.

Я поставил точку останова, когда она была нулевой, и взял эти два скриншота.

Вот где FindName возвращает значение null для «popSelectIteration»:

альтернативный текст http://img175.imageshack.us/img175/2055/popupisnull.png

Но если вы покопаетесь в часах, то увидите, что там есть ребенок:

альтернативный текст http://img708.imageshack.us/img708/8757/watchwithpopupnull.png

Так чего мне не хватает? Почему FindName не находит его? Как вы можете видеть на снимке экрана, это не проблема синхронизации (часы FindName равны нулю, но прямой путь в порядке).

Есть ли лучший способ найти элемент управления?

Примечание: Если вы включили XAML для рассматриваемой кнопки переключения, это можно найти в этом вопросе:WPF - FrameworkElement - перечислить всех потомков?.

ОбновитьЯ немного покопался, чтобы понять, почему это иногда терпит неудачу, а иногда - работает. У меня есть анимация, которая вызываетNameScope.SetNameScope((DependencyObject)form, new NameScope()); (Полный код методаВот). Сразу после этого вызова FindName начинает терпеть неудачу.

Я не очень понимаю этот призыв. Я думаю, что я скопировал и вставил код. Во всяком случае, я закомментировал это. Но я хотел бы знать, почему это не удается.

Ответы на вопрос(6)

Ваш ответ на вопрос