2012-01-05 5 views
1

wpf의 각 UI 컨트롤에 '로드 됨'이벤트가 있습니다. 내가 Combobox와 같은 다른 컨트롤 목록이있는 사용자 정의 컨트롤이 있다고 가정 해 보겠습니다. 이제 "usercontrol"과 "Combobox"에 대해로드 된 이벤트를 잡으면로드 된 이벤트가 먼저 Usercontrol과 Combo 상자에서 발생합니다. 즉, 사용자 컨트롤이 이미로드 된 경우 해당 자식 요소가 없을 수 있습니다. 로드 완료. 그러나 전역로드 이벤트를 포착하려면 모든 컨트롤이 성공적으로로드 될 때만로드 이벤트가 발생한다는 것을 의미합니다. 이걸 어떻게 달성 할 수 있니? 미리 감사드립니다.WPF에서 전역로드 이벤트를 catch하는 방법

+1

말씀해 주시겠습니까 - 달성하려는 것은 무엇입니까? GetTemplatedChild를 사용하여 액세스하려는 파트가있는 템플릿 컨트롤 인 경우 컨트롤로드는 모든 파트가 완전히로드되면 시작됩니다. –

+0

나는 @Dmitry에 동의합니다. 아마도 당신은 여기에 어떤 것을하지 않으려 고합니다 ... 최종 목표를 말해주십시오. –

답변

0

글로벌로드 Loaded 이벤트가 없으면 '로드 된 이벤트가 처음으로 Usercontrol에 대해 발생한 다음 콤보 상자에 대해', 사용자가 이러한 이벤트에 대해 등록한 순서 때문일 수 있습니다. 정확히 당신이 성취하고자하는 것은 무엇입니까?

기타 유용한 이벤트는 LayoutUpdated이며 시각 트리가 수정 될 때마다 실행됩니다. 핸들러를 등록하고이 이벤트가 처음 발생한 시점을 파악한 다음 UI 상태를 확인하여 UI가 처음 렌더링 될 때를 결정할 수 있습니다.

그러나 복잡한 UI를 만들 때처럼 복잡하거나 특별한 기능을 UI에서 사용하는 경우에는 일반적으로 이러한 기술을 사용해야합니다. 대부분의 응용 프로그램에서는 이러한 이벤트 중 하나를 처리 할 필요가 없습니다.

+0

20-30 개의 콤보 상자가 있는데 제대로로드되면 각 항목에 몇 가지 항목을 추가하려고합니다. 이제 사용자 정의 컨트롤의로드 이벤트에서이 작업을 수행하면 해당 콤보 상자에 액세스 할 수 없습니다 (아직로드되지 않았기 때문에). 사용자 컨 트롤 안의 모든 컨트롤이 완전히로드 될 때만 트리거되는 이벤트가 필요합니다 ... – Rana

+0

항목을 추가하기 전에로드 될 때까지 기다려야하는 이유는 무엇입니까? 비주얼 트리/스크린에 렌더링되기 전에 직접 또는 바인딩을 통해 추가 할 수 있습니다. – ColinE

+0

그래, 내가 알기로는 모두 사용자 컨트롤이/initcomponent 부분을로드 한 후에 만 ​​생각했다. 컨트롤을 렌더링 할 필요가 없습니다. 감사. – Rana

관련 문제