在BackgroundWorker.DoWork上旋转图像

时间:2012-11-29 09:36:18

标签: wpf image rotation backgroundworker eventtrigger

我有一个背景工作者,可以按照需要工作。但是我希望我的视图中的图像能够从背景工作者的那一刻起不断旋转。调用DoWork直到调用backgroundworker.completed。

我尝试了一些事件触发器,但我无法让它工作。关于我如何继续这个的Anny建议?

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

BR

1 个答案:

答案 0 :(得分: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的StoryBoard(“sbdRotation”);并致电Begin