依存関係プロパティが true に設定されるたびにフラッシュしたい小さな楕円があります。プロパティは数ミリ秒で true から false に非常に迅速に戻るため、単純なスタイルのデータトリガーではなく、アニメーションを使用してこれを行う必要があります。基本的に、楕円のアニメーションに ping を実行する真の値が必要です。
<Ellipse Height="10" Width="10" Stroke="#FFFFFFFF" Margin="5,3,0,0">
<Ellipse.Fill>
<SolidColorBrush />
</Ellipse.Fill>
<Ellipse.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsReceiving}" Value="True" >
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Fill.Color">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="Red"/>
<DiscreteColorKeyFrame KeyTime="0:0:0.25" Value="Transparent"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
このアニメーションは機能しているように見えますが、値が最初に true になったときにのみ起動します。何か不足していますか?
更新: 皆さん、ご意見ありがとうございます。結局のところ、それはスレッドの問題でした。もともと、INotifyPropertyChanged を実装したビュー モデルにバインドされたコントロールに DP がありました。次に、コントロールの DP を削除して、ビュー モデル プロパティを DP に変えてみました。ブーム、別のスレッドがオブジェクトを所有しているというエラーが発生し始めたのはそのときです。アプリの他の部分で行ったように、Reactive Extensions を使用して Observable を組み込む必要があることに気付きました。PropertyChanged() を使用してビュー モデルの従来のプロパティに戻し、それをコントロールのアニメーションに単純にバインドしました。現在、すべてが問題なく機能しています。