以下に、2つのテキストボックスで構成されるコントロールテンプレートがあります。コントロールテンプレートはグリッドのセル表示テンプレートとして使用され、datacontextはモデルオブジェクト(INotifyPropertyChangedを実装する)のバインディングリストです。2番目のテキストボックスは最初は折りたたまれています。ただし、「アスク」と「ビッド」の価格更新が発生した場合は、表示を約1秒間切り替えて、このテキストボックスを「フラッシュ」したいと思います。
私が見ている問題は、フォームの最初のロード時に、2番目のテキストボックスが点滅するのを確認することですが、その後は...何も表示されません。興味深いことに、セルグリッド(編集テンプレートをアクティブにする)をクリックしてからセルの外をクリックすると(下に示すテンプレートである表示テンプレートに戻ります)、2番目のテキストボックスが点滅します。
AskPriceまたはBidPriceが変更されたときに2番目のテキストボックスが「点滅」しない理由を誰かが見ることができますか?コンバーターが期待どおりに呼び出されていることはわかりますが、更新によってストーリーボードアニメーションがトリガーされていません。
<Style x:Key="PriceSpreadAlertStyle" TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Setter Property="Background" Value="Red" />
<Style.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated" >
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00.2" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.4" Value="{x:Static Visibility.Collapsed}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.6" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.8" Value="{x:Static Visibility.Collapsed}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:01.0" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:01.2" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
<ControlTemplate x:Key="QuoteDisplayTemplate" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding QuotePrice}" />
<TextBlock Style="{StaticResource PriceSpreadAlertStyle}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource AskBidToSpreadConverter}">
<Binding Path="AskPrice" UpdateSourceTrigger="PropertyChanged" NotifyOnTargetUpdated="True" />
<Binding Path="BidPrice" UpdateSourceTrigger="PropertyChanged" NotifyOnTargetUpdated="True" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</ControlTemplate>