WPFとMVVMを使用しています。ViewModelのある状態でトリガーされるカラーアニメーションを備えたストーリーボードがあります。「増加」状態の場合、ストーリーボードによってアイテムが1回緑色に点滅します。「減少」状態の場合、ストーリーボードは1回赤く点滅します。「変更なし」状態の場合、何も起こりません。
私が抱えている問題は、アニメーションの実行中に何らかの理由で状態が変化した場合、アニメーションが停止することです。たとえば、増加状態に入ると、アニメーションが緑色に点滅し始めます。次に、同じプロパティがUnchangedに変更され、アニメーションは終了せずにすぐに停止します。
トリガーする値が変更された場合でも、アニメーションをコースで実行させる方法はありますか?
<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>
解決策:終了アクションを削除することと、塗りつぶし動作を停止に設定することの組み合わせ。