Dave Relyea’s Silverlight Blog에 10월 11일에 올라온 글인데 왜 놓쳤는지 몰라요. 엄청 중요한 내용이라 그대로 옮겨 볼께요. 이 글은 실버라이트의 컨트롤이 생성되고 속성이 설정될 때 어떤 이벤트들과 오버라이드들이 어떤 타이밍으로 호출되는지를 설명합니다.
동작 | XAML에서 만든 컨트롤 | 코드에서 만든 컨트롤 |
컨트롤의 생성자Ctor | 시작 태그가 파싱되자 마자. | new로 인스턴스를 생성할 때. |
명시적인 스타일 적용됨 | Style 속성이 XAML에서 설정되었다면 종료 태그가 파싱되자 마자 적용. | Style 속성이 설정되자 마자. |
빌트인 스타일(generic.xaml) 적용됨 | 명시적인 스타일이 적용된 후 종료 태그가 파싱되자마자. 이것은 명시적인 스타일을 덮어쓰지 않음. | 컨트롤이 비주얼 트리에 들어갈 때. 이것은 명시적인 스타일을 덮어쓰지 않음. |
프로퍼티 설정됨 | 어트리뷰트가 파싱되었을 때. | 해당 속성을 설정했을 때. |
Loaded 이벤트 | 엘리먼트가 비주얼 트리에 추가되었을 때 전달됨. 이벤트는 다음 프레임이 렌더링 되기 전에 발생되고 레이아웃 변경 전에 일어남. | (XAML과 동일) |
템플릿 적용됨(컨트롤의 비주얼이 템플릿에서 만들어진 경우) | 레이아웃 측정 과정. 컨트롤이 비주얼 트리를 가지고 있지 않다면 템플릿 프로퍼티가 적용됨. 컨트롤은 비주얼 트리 없이 라이프 사이클을 시작하고 템플릿 프로퍼티가 설정될 때 비주얼 트리가 클리어됨. ApplyTemplate을 호출하여 명시적으로 지시할 수 있음. |
(XAML과 동일) |
OnApplyTemplate 호출됨 | 템플릿이 적용된 시점. 기반 클래스의 OnApplyTemplate을 호출할 필요는 없지만, 사용자가 구현한 커스텀 컨트롤을 상속 할 때에는 필요할 수 있음. | (XAML과 동일) |
비주얼이 최초로 사용 가능하게 됨. | OnApplyTemplate에서 GetTemplateChild로 획득한 비주얼에 대해서. | (XAML과 동일) |
MeasureOverride 호출됨 | 레이아웃 측정 과정. 만약 측정 과정중에 템플릿이 확장된 경우 MeasureOverride는 템플릿 확장이 끝난 후 호출됨. |
(XAML과 동일) |
ArrangeOverride 호출됨 | 컨트롤의 정렬 과정. 측정 과정이 완료된 후 발생. | (XAML과 동일) |
SizeChanged 이벤트 | 측정과 정렬 과정이 완료된 후. | (XAML과 동일) |
LayoutUpdated 이벤트 | SizeChanged 이벤트가 발생된 후. | (XAML과 동일) |
Submit comment.
링크가 이상하네요. ^^
웁스! 수정했습니다.
알려주셔서 고마워요.