在我的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();
有什么想法吗?
答案 0 :(得分:1)
主要思想是你需要调用故事板Stop方法传递故事板的容器。
您应该尝试用以下方法替换停止呼叫:
((Storyboard)uc.FindResource("BlinkingStoryBoard")).Stop(ImagePlaceHolder);
同样从参考资料中可以看出,您可以为BeginStoryboard
命名,例如:
<BeginStoryboard Name="MyStoryboardStarter" Storyboard="{StaticResource BlinkingStoryBoard}"/>
现在,在后面的代码中,您可以更轻松地找到故事板,并将其停止:
MyStoryboardStarter.Storyboard.Stop(ImagePlaceHolder);
希望这有帮助。