2010-06-07 5 views
5

XAML 응용 프로그램의 일부를 애니메이션으로 처리하는 상황에 처해 있으며 코드를 계속 진행하기 전에 애니메이션 및 렌더링이 완료 될 때까지 기다려야합니다. 지금까지 내 함수의 꼬리 끝은 다음과 같이 보입니다 :애니메이션 기다림, 렌더링 완료 - XAML 및 C#

ProcExpandCollapse.Begin(); 
    while (ProcExpandCollapse.GetCurrentState() != ClockState.Stopped) { } 
} 

이론적으로 애니메이션이 끝날 때까지 대기합니다. 그러나 렌더링이 완료 될 때까지 기다리지는 않습니다. 응용 프로그램을 그리는 스레드가 여전히 애니메이션을 다시 그릴 수는 없습니다.

애니메이션이 UIElement를 확장하고 있으며, 다음 코드에서 렌더링 된 크기를 사용하여 일부 작업을 수행합니다. 내 질문은 그렇다면 계속 진행하기 전에 UI 요소가 다시 렌더링 될 때까지 어떻게 기다려야합니까?

답변

6

내가 마지막으로 (답을 발견 (다음 탭을 볼 시간을 히트 VS 당신을 위해 조각을 생성합니다) 당신이 원하는 생각)! 기본적으로 렌더링 된 컨트롤을 컨트롤 디스패처의 큐에 매우 낮은 우선 순위로 배치하여 코드를 렌더링하기 때문에 자연스럽게 렌더링됩니다. 예를 들면 :

mycontrol.Dispatcher.BeginInvoke((Action)delegate{textbox1.Text = "Grazie";}); 
mycontrol.Dispatcher.Invoke((Action)delegate{GetScreenshot();}, DispatcherPriority.Background); 

GetScreenshot 호출과 렌더링이 완료된 후 (렌더링 배경보다 더 높은 우선 순위를 가지고 있기 때문에)이 될 것이다 완료 후 코드는 다음 것이며 진행됩니다.

0

Storyboard 개체에는 구독 할 수있는 '완료'이벤트가 있습니다. 애니메이션이 끝나면 호출됩니다. 이것은 당신이 찾고있는 무엇입니까?

기본적으로 나는 "ProcExpandCollapse.Completed + ="나는 컨설팅 서비스를 위해 지불해야하지만

+1

아니요, * 렌더링 *이 완료 될 때까지 기다려야합니다. –

관련 문제