4

このようなトリガー セクションを持つテキスト ボックスのコントロール テンプレートがあります。

<ControlTemplate.Triggers>
    <EventTrigger  RoutedEvent="Binding.TargetUpdated">
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimationUsingKeyFrames 
                    Storyboard.TargetName="Border"
                    Storyboard.TargetProperty="Background.(SolidColorBrush.Color)">
                    <EasingColorKeyFrame KeyTime="0:0:0.20" Value="Yellow"/>
                    <EasingColorKeyFrame KeyTime="0:0:1" Value="{Binding ElementName=Border, Path=Background.SolidColorBrush.Color}"/>
                </ColorAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</ControlTemplate.Triggers>

バインディング ターゲットが更新されるたびに、テキスト ボックスが黄色で点滅するという考え方です。私の UI にはコントロール間の複雑な依存関係があり、状況が変化したときに単純な視覚的な手がかりを介してユーザーに通知されるようにしたいと考えています。

上記の問題は、テキストボックスの背景の色を以前の色にリセットすることです。アニメーション化して白に戻すと、これは元の色ではない可能性があります。いくつかの視覚的な状態がありますnormal disabled enabled

したがって、黄色をパルスしてから、以前の色に戻したいと思います。ただし、最終的なキーフレームの色をバインドしようとすると、次のようなエラーが発生します

Cannot freeze storyboard to be used across multiple threads.

終了後にアニメーションの結果を自動的にクリアするか、正しい色を動的にバインドする方法はありますか?

4

1 に答える 1