StopStoryboard不会停止无尽的动画

时间:2019-05-06 12:33:18

标签: wpf datatrigger wpf-animation

我正在Polygon上绘制Canvas作为电池指示器。如果电池百分比下降到阈值以下,则多边形应开始执行脉冲动画,如果电池百分比恢复到阈值以上,则应停止脉冲。为此,我使用了绑定到视图模型中的DataTrigger的{​​{1}},该模型告诉我当前是否运行脉冲动画循环。

首先,关闭动画,并且一旦百分比降低,它就会按预期开始脉动。但是,当百分比水平再次上升时,我找不到任何方法使跳动的动画停止。

这是我当前的XAML代码:

bool

我发现了两个与此用例相同的问题(12),<Polygon.Style> <Style TargetType="Polygon"> <Style.Triggers> <DataTrigger Binding="{Binding IsLowPercentage}" Value="True"> <DataTrigger.EnterActions> <BeginStoryboard Name="Pulse"> <Storyboard> <DoubleAnimation AutoReverse="True" RepeatBehavior="Forever" Storyboard.TargetProperty="Opacity" From="1" To="0.2" /> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <StopStoryboard BeginStoryboardName="Pulse" /> <!--<RemoveStoryboard BeginStoryboardName="Pulse" />--> <!--<BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2" /> </Storyboard> </BeginStoryboard>--> </DataTrigger.ExitActions> </DataTrigger> </Style.Triggers> </Style> </Polygon.Style> 似乎对他们有用,但对我来说却不是。 / p>

StopStoryboard旁边,我还尝试了StopStoryboard和另一个RemoveStoryboard(因为根据this answer,如果新的故事板具有相同的依赖属性,则故事板会自动停止)。有关代码显示在注释部分中。我测试了所有组合,分别是BeginStoryboardStopRemoveBeginStop+RemoveStop+BeginRemove+Begin组合,但似乎无济于事,脉冲效果会一直持续下去。

我也考虑了different naming scopes的问题,但是与使用{{1}的this example相比,我的故事板的命名范围更近(相同 Stop+Remove+Begin) },并且我的代码也与Microsoft的this other example非常相似,但是我的动画是无限的。

我已经验证了DataTrigger实际上是否分别设置为StopStoryboardbool,并且我看到绑定到同一视图模型的所有其他值都显示了来自该视图模型,所以应该没问题。

使用true的每个人似乎都不错,但是我的代码有误,因此对我不起作用。

0 个答案:

没有答案