2012-11-29 53 views
0

我有一個後臺工作,它可以根據需要工作。但我希望我的視圖中的圖像能夠在背景工作時刻不停地旋轉.DoWork被調用直到backgroundworker.completed被調用。旋轉BackgroundWorker.DoWork上的圖像

我已經嘗試了一些事件觸發器,但我無法讓它工作。關於我如何繼續這樣做的安妮建議?

我使用c#,wpf,.Net 4.0,MVVM。

BR

回答

0

DoWork的是不訪問UI元素的最佳地點,因爲它不是在UI線程被炒了,你應該使用ProgressChanged事件

我建議創建RotateTransformStoryBoard

<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

是的,如果你從視圖中調用它,而不是從視圖模型 –

+0

但我的vackground工作人員正在從視圖模型運行。那麼我怎麼才能從後面的代碼中訪問ProGress更改的事件? – Sulby