2012-11-29 5 views
0

원하는대로 작동하는 백그라운드 작업자가 있습니다. 그러나 나는 backgroundworker.completed가 호출 될 때까지 backgroundworker.DoWork가 호출 될 때부터 내보기의 이미지를 계속 회전시키고 싶습니다.BackgroundWorker.DoWork에서 이미지 회전

일부 이벤트 트리거로 약간 시도했지만 작동시키지 못했습니다. 이걸 내가 어떻게하면 좋을지에 대한 제안?

저는 C#, wpf, .Net 4.0, MVVM을 사용합니다. 이 UI 스레드에서 해고되지 않기 때문에

BR

답변

0

DoWork은, UI 요소에 액세스 할 수있는 최적의 장소가 아니다, 당신은 그것을

에 대한 ProgressChanged 이벤트

내가 RotateTransform을 만들 제안

StoryBoard를 사용해야합니다

<Window.Resources> 
     <Storyboard x:Key="sbdRotation"> 
      <DoubleAnimation 
      Storyboard.TargetName="image" 
      Storyboard.TargetProperty="(Image.LayoutTransform).(RotateTransform.Angle)" 
      By="6" Duration="0:0:0.2" 
      RepeatBehavior="1x"/> 
     </Storyboard> 
</Window.Resources> 

... 
<Image Name="image" Width="50" Height="50" Source="OK.png"> 
     <Image.LayoutTransform> 
      <RotateTransform CenterX="0.5" CenterY="0.5" /> 
     </Image.LayoutTransform> 
</Image> 

ProgressChanged 이벤트 내에서 FindResource ("sbdRotation")으로 StoryBoard를 찾으십시오. 및 호출 Begin

+0

FindResources는 MVVM 모델과 일치합니까? – Sulby

+0

그래, 당신이 viewmodel이 아닌보기에서 호출하면 –

+0

하지만 내 vackground worker가 viewmodel에서 실행 중입니다. ProGress에서 변경된 이벤트는 코드 숨김에서 어떻게 액세스 할 수 있습니까? 이 경우 – Sulby