FindName 나를 위해 고장 안 때 :(당신이 그런 일에 전문가 인 경우WPF -이
내가 도움을 사랑 FindName는 null를 돌려줍니다
내가 찾고 있어요 목적이있다.. 내가 가진 증거 여기
는 시나리오이다.ToggleButton button = (ToggleButton)sender;
Popup popup = (Popup)button.FindName("popSelectIteration");
popup
가 null 항상은 아니지만 그냥 가끔하지만 내가 익어 나는 아이를 null로 설정된 경우에도.. 거기에있다.
null 일 때 중단 점을 넣고이 두 스크린 샷을 찍었습니다.
alt text http://img175.imageshack.us/img175/2055/popupisnull.png
하지만 시계 파고 경우, 당신이 볼 수있는 아이가 있음 :
alt text http://img708.imageshack.us/img708/8757/watchwithpopupnull.png
FindName은 "popSelectIteration"에 대한 null이 반환되는 경우
입니다 그래서 나는 무엇을 놓치고 있습니까? FindName이 왜 그것을 찾지 못합니까? 스크린 샷에서 볼 수 있듯이 이것은 타이밍 문제가 아닙니다 (FindName 시계는 null이지만 직접 경로는 괜찮습니다).
컨트롤을 찾는 더 좋은 방법이 있습니까?
사이드 노트 : 해당 토글 버튼에 대해 XAML에서 상호 작용하는 경우이 질문에서 확인할 수 있습니다 : WPF - FrameworkElement - Enumerate all decendents?.
업데이트 :이 작동 약간의 시간과 다른 시간에 실패한 이유를 파고 일부를했다. NameScope.SetNameScope((DependencyObject)form, new NameScope());
(전체 메서드 코드 here)이라는 애니메이션이 있습니다. 해당 호출 바로 뒤에 FindName이 실패하기 시작합니다.
나는 그 전화를 정말로 이해하지 못한다. 코드를 복사하여 붙여 넣은 것 같습니다. 어쨌든, 나는 그것을 주석 처리했다. 그러나 나는 이것이 왜 실패하고 있는지 알고 싶을 것이다.
나를 위해 일했습니다. Template.FindName()으로이 문제가 발생했습니다 – Trap
이것은 저에게 효과적이었습니다. 처음에는 숨겨진 컨트롤이나 처음에는 볼 수 없었던 탭에서 더 많은 문제가있었습니다. – Dave
ComboBox가있는 GetTemplateChild ("PART_EditableTextBox")에 문제가 있습니다. ApplyTemplate()을 호출하면 문제가 해결되었습니다. 감사! –