原因:は私がそうのように私のコラムの一つに適用されているDataGridCellテンプレート作成した例外
<DataGridTextColumn Binding="{Binding LastUpdated}"
IsReadOnly="True" CanUserReorder="False"
CanUserSort="False" CanUserResize="False"
CellStyle="{StaticResource DataGridCellStyle1}"
/>
を、テンプレートは以下のようになります。
<ControlTemplate TargetType="{x:Type DataGridCell}">
<ControlTemplate.Resources>
<Storyboard x:Key="CellChangedStoryboard">
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" Storyboard.TargetName="DGC_Border">
<EasingColorKeyFrame KeyTime="0" Value="LightGreen"/>
<EasingColorKeyFrame KeyTime="0:0:8" Value="Red"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<Border x:Name="DGC_Border" Background="Red">
<ContentPresenter />
<i:Interaction.Triggers>
<ei:TimerTrigger MillisecondsPerTick="1000" >
<ei:ControlStoryboardAction Storyboard="{StaticResource CellChangedStoryboard}"/>
</ei:TimerTrigger>
</i:Interaction.Triggers>
</Border>
</ControlTemplate>
でこの例では、Blend TimerTriggerを使用してアニメーションをトリガーしていますが、アニメーションをどのようにトリガーしても問題ありません。(グリッドをクリックするとすぐにクラッシュします)
ストーリーボードを削除すると、ソート時にクラッシュしません。
例外はです。InvalidOperationException: 'System.Windows.Controls.Border'の名前スコープに 'DGC_Border'という名前が見つかりません。
DataGridがソートすると、セル/列が破棄されるか、またはそれ以外の方法で混乱し、実行中のアニメーションがアニメーション化していたセルを見つけることができなくなると思われます。
なぜ例外が発生し、それを停止するのですか? ありがとう
アップデート:<ControlTemplate.Triggers>
を使用してStoryBoardを起動すると、正常に動作しているようです。残念ながら、バウンドプロパティが変更されたときにストーリーボードを再生する必要があるため、これは解決方法ではありません。
本質的にバリデーションUIを再作成しようとしていますが、アニメーションがありますか? –
いいえ、セルを更新するときにアニメーションを作成したい – Schneider