触发属性更改时情节提要动画未完成



我正在使用WPF和MVVM。我有一个故事板,其中彩色动画在 ViewModel 中的某个状态下触发。如果处于"增加"状态,情节提要将导致项目闪烁一次绿色。如果处于"减少"状态,情节提要将闪烁一次红色。如果处于"未更改"状态,则不会发生任何操作。

我遇到的问题是,如果由于任何原因,动画运行时状态发生变化,动画将停止。 例如,我进入"增加"状态,动画开始闪烁绿色。然后,相同的属性更改为"未更改",动画将立即停止而不结束。

有没有办法让动画运行,即使它触发的值已经改变?

<Storyboard x:Key="ValueIncreasedStoryboard" AutoReverse="True">
    <ColorAnimation
        Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
        To="{StaticResource ResourceKey=IncreasedColor}"
        Duration="0:0:0.4" />
    <ColorAnimation
        Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"
        To="{StaticResource ResourceKey=IncreasedColor}"
        Duration="0:0:1" />
</Storyboard>
<DataTrigger Binding="{Binding Path=Status}" Value="{x:Static ViewModel:Status.Increased}">
    <DataTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource ValueIncreasedStoryboard}" x:Name="ValueIncreased_Storyboard"/>
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="ValueIncreased_Storyboard"/>
    </DataTrigger.ExitActions>
</DataTrigger>

溶液:删除退出操作和将填充行为设置为"停止"的组合。

删除以下行:

<DataTrigger.ExitActions>
    <RemoveStoryboard BeginStoryboardName="ValueIncreased_Storyboard"/>
</DataTrigger.ExitActions>

然后订阅 Storyboard.Done 事件。您可以使用 EventSetter 从 XAML 执行此操作。在"已完成"事件处理程序中,删除情节提要。

最新更新