我正在尝试在DataGrid中的单元格数值发生变化时,对单元格执行动画。
DataGrid本身绑定了一个普通的CLR对象ObservableCollection。在这种情况下,我们假设这些对象是具有“FirstName”、“LastName”和“Age”属性的“Person”对象。“Person”类实现了INotifyPropertyChanged接口,并且每个属性的setter中都有适当的onPropertyChanged调用。
这些都很好。在datagrid定义中,我设置了绘制每个单元格的DataTemplate,并附加了一个datatrigger...如下:
<DataGridTemplateColumn Header="FirstName">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Name="templateBorder">
<TextBlock Name="templateTextBlock" Text="{Binding Path=FirstName}" />
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=FirstName}" Value="Richard">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard AutoReverse="True">
<DoubleAnimation Storyboard.TargetName="templateTextBlock" Storyboard.TargetProperty="Opacity" To=".1" Duration="0:0:.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
当我更新ObservableCollection中的对象时(例如更改FirstName值),DataGrid也会被更新。根据上面的示例,如果我将FirstName的值更改为“Richard”,那么动画也会被执行。
我的问题是,无论FirstName的新值是什么,我都需要运行我的动画。我已经搜索了网络,但迄今为止只能找到针对已知值触发触发器的示例,例如在我的示例中演示的那样,当FirstName为'Richard'时触发触发器。
我的问题是,如何在更新DataGrid中给定行的FirstName属性时触发datatrigger,而不管其值为何?
非常感谢。