停止双动画

时间:2014-07-18 11:13:17

标签: c# wpf xaml

在我的UserControl.Resources我定义了Storyboard,触发DoubleAnimation设置Opactiy

<Storyboard AutoReverse="True" x:Key="BlinkingStoryBoard">
    <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0.1" Duration="0:0:2" RepeatBehavior="Forever"/>
</Storyboard>

加载UserControl时,此故事板应用于网格:

<Grid Name="ImagePlaceHolder">
    <Rectangle Fill="#D52B1E" Width="75" Height="75"/>
    <Image Source="pack://siteoforigin:,,,/Resources/Images/cross.png" Width="75" Height="75" RenderTransformOrigin="0.5, 0.5" x:Name="Cross"/>
    <Grid.Triggers>
        <EventTrigger RoutedEvent="UserControl.Loaded">
            <BeginStoryboard Storyboard="{StaticResource BlinkingStoryBoard}"/>
        </EventTrigger>
    </Grid.Triggers>
</Grid>

从我的代码隐藏中我想停止这个动画,但我不能阻止它!

((Storyboard)uc.FindResource("BlinkingStoryBoard")).Stop();

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

查看this reference

主要思想是你需要调用故事板Stop方法传递故事板的容器。

您应该尝试用以下方法替换停止呼叫:

((Storyboard)uc.FindResource("BlinkingStoryBoard")).Stop(ImagePlaceHolder);

同样从参考资料中可以看出,您可以为BeginStoryboard命名,例如:

<BeginStoryboard Name="MyStoryboardStarter" Storyboard="{StaticResource BlinkingStoryBoard}"/>

现在,在后面的代码中,您可以更轻松地找到故事板,并将其停止:

MyStoryboardStarter.Storyboard.Stop(ImagePlaceHolder);

希望这有帮助。