我尝试在datagrid单元格的值发生更改时,在datagrid中的单元格上执行动画。wpf - 当数据属性更改时触发数据触发器,无论新值如何
datagrid本身绑定到一个普通的旧CLR对象的ObservableCollection。在这种情况下,可以说对象是'Person'对象,具有'Firstname','Lastname'和'Age'属性。 '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的值更改为'Richard',那么动画也会执行得很好。
我的问题是,无论Firstname的新值是什么,我都需要运行我的动画。我已经抓取了网页,但有些内容似乎只能找到触发某个已知值的例子,例如当我的例子中演示的名字是'Richard'时触发。
我的问题是我该如何触发datatrigger而不考虑更新属性的值?所以,基本上,如何在数据网格中的给定行更新FirstName属性时触发数据触发器。
非常感谢。
为什么你不尝试使用视觉状态管理器...看到这篇文章。 http://stackoverflow.com/questions/15258199/blend-trigger-vs-wpf-trigger – stromms 2014-11-12 22:03:52