单击DataGrid时动画丢失

时间:2018-07-08 07:56:43

标签: c# wpf

我有一个DataGrid,其中包含一个实现了名为ResultChanged的布尔属性的项目列表,该属性允许我在DataGrid的特定单元格上创建闪烁效果,特别是,如果将该属性设置为true,则DataGrid的单元格将被涂成橙色并闪烁5秒钟,在动画结束时,该颜色将保持在{{1 }},除了一个问题外,这对我来说效果很好。

问题

当我单击DataGrid(任意行)时,动画应用的颜色将被删除,但我希望这种颜色保留在单元格上。

这是我的代码:

DataGrid

有人知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

当您选择或取消选择受动画影响的行时,动画效果将丢失,因为randomIO会更改所选行的前景和背景画笔。现在,通常情况下,动画对DataGridForeground属性的更改将使precedence超过所选行的更改。 但是您的动画不会为BackgroundForeground设置动画!而是为BackgroundForeground.Color设置动画;这些更改没有优先级,当其他更改直接Background.ColorForeground时将丢失。

因此,您的动画必须直接为BackgroundForeground设置动画。然后,即使动画结束,更改也仍然有效。

例如,您可以通过使用问题Brush to Brush Animation中的Background类并使用类似于以下的情节提要来实现此目的:

BrushAnimation

编辑:

以下是一种允许将<DataTrigger Binding="{Binding ResultChanged}" Value="True" > <DataTrigger.EnterActions> <BeginStoryboard> <Storyboard> <Storyboard x:Name="Blink" RepeatBehavior="5x"> <local:BrushAnimation Storyboard.TargetProperty="Background" BeginTime="00:00:00" Duration="0:0:0.5" From="White" To="Orange" /> <local:BrushAnimation Storyboard.TargetProperty="Foreground" BeginTime="00:00:00" Duration="0:0:0.5" From="Yellow" To="Black" /> </Storyboard> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> </DataTrigger> 设置为true的解决方案:

AutoReverse