FindName сломана для меня :(WPF - FindName Возвращает пустое значение, когда оно не должно
Если вы являетесь экспертом в таких вещах, которые я хотел бы некоторую помощь
Объект Я ищу там.. у меня есть доказательство
Вот сценарий:.
ToggleButton button = (ToggleButton)sender;
Popup popup = (Popup)button.FindName("popSelectIteration");
popup
равна нулю, но не всегда просто иногда но даже тогда, когда он установлен в нуль ребенка я являюсь Looki.. ng для есть.
Я поставил точку останова, когда он был пустым, и схватил эти два скриншота.
где FindName возвращается нуль для "popSelectIteration":
alt text http://img175.imageshack.us/img175/2055/popupisnull.png
Но если покопаться в часы, вы видите, что ребенок есть:
alt text http://img708.imageshack.us/img708/8757/watchwithpopupnull.png
Так что я пропущу? Почему FindName не находит его? Как видно из снимка экрана, это не проблема времени (часы FindName имеют значение NULL, но прямой путь в порядке).
Есть ли лучший способ найти контроль?
Боковое примечание: Если вы заинтересованы в XAML для соответствующей кнопки переключения, вы можете найти в этом вопросе: WPF - FrameworkElement - Enumerate all decendents?.
Update: Я сделал некоторые копать, чтобы понять, почему это не удается несколько раз и в других случаях это работает. У меня есть анимация, которая вызывает NameScope.SetNameScope((DependencyObject)form, new NameScope());
(Полный код метода here). Сразу после этого вызов FindName начинает сбой.
Я действительно не понимаю этого звонка. Кажется, я скопировал и вставил код. Во всяком случае, я прокомментировал это. Но я хотел бы знать, почему это не удается.
Работал для меня. Имела эту проблему с Template.FindName() – Trap
Это сработало для меня, это была проблема больше для элементов управления, которые были скрыты изначально или на вкладке, которая изначально не была видимой. – Dave
У меня возникла проблема с GetTemplateChild ("PART_EditableTextBox") с помощью ComboBox. Вызов ApplyTemplate() заранее решил проблему. Благодаря! –