我有一个DataGrid
,其中包含一个实现了名为ResultChanged
的布尔属性的项目列表,该属性允许我在DataGrid
的特定单元格上创建闪烁效果,特别是,如果将该属性设置为true
,则DataGrid
的单元格将被涂成橙色并闪烁5秒钟,在动画结束时,该颜色将保持在{{1 }},除了一个问题外,这对我来说效果很好。
问题
当我单击DataGrid
(任意行)时,动画应用的颜色将被删除,但我希望这种颜色保留在单元格上。
这是我的代码:
DataGrid
有人知道我做错了吗?
答案 0 :(得分:1)
当您选择或取消选择受动画影响的行时,动画效果将丢失,因为randomIO
会更改所选行的前景和背景画笔。现在,通常情况下,动画对DataGrid
和Foreground
属性的更改将使precedence超过所选行的更改。
但是您的动画不会为Background
和Foreground
设置动画!而是为Background
和Foreground.Color
设置动画;这些更改没有优先级,当其他更改直接Background.Color
或Foreground
时将丢失。
因此,您的动画必须直接为Background
和Foreground
设置动画。然后,即使动画结束,更改也仍然有效。
例如,您可以通过使用问题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