2012-02-10 1 views
3

WPF를 사용하여 응용 프로그램을 만들고 있는데 두 애니메이션 사이에 지연이 있기를 원합니다. 하지만 난창이 로딩을 완료했는지 확인하는 방법?

MainWindow_Loaded(object sender, RoutedEventArgs e) 

경우에 해당 할 때 그것은 단지 지연로드하는 동안 나는 1 애니메이션을보고 싶어요.

어떤 도움이 필요합니까?

+1

에릭, 당신은 애니메이션이 있다고 보았다 A [BEGINTIME] (http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.begintime.aspx) 속성? 아마 애니메이션 시작 지연에 도움이 될 것입니다. – Clemens

+0

아니요. 감사! –

+0

[이 답변을보십시오 (http://stackoverflow.com/a/8886941/187955). –

답변

0

로딩 (바인딩 렌더링)이 완료되었음을 알리는 기본 제공 알림이 없습니다. 그러니 자신 만의 해결책을 찾아야합니다. 이 도움이

new Thread(new ThreadStart(new Action(() => 
{ 
     Sleep(2000); // a couple of seconds sleep 
     StartAnimation(); 

}))).Start(); 

희망 :

하나는이 같은 MainWindow_Loaded 쓰기 뭔가 (의사 코드)에있을 수 있습니다.

+0

글쎄, 코드는 작동하지 않지만, 스레드로 작업하는 것에 대해 많이 알지 못하기 때문에 그렇다고 생각합니다.하지만 확실하게 quesion에 응답합니다. –

2

Dispatcher 객체를 사용하여 애니메이션으로 코드를 호출해볼 가치가 있습니다. 디스패처 우선 순위를 설정하면 예를 들어 모든 데이터 바인딩 (비동기식)이 완료 될 때까지 실행을 연기 할 수 있습니다.

// Schedule the update function in the UI thread. 
    Dispatcher.BeginInvoke(
     System.Windows.Threading.DispatcherPriority.Loaded, ...); 

이것이 작동하지 않으면 우선 순위를 변경하십시오. 나중에 우선 순위를 변경하면 나중에 조치가 호출됩니다.

0

Window.ContentRendered (또는 Me.ContentRendered)를 사용하여 창로드가 완료된 것을 알게되었습니다.

See this answer