相关疑难解决方法(0)

wpf - 无论新值如何,属性更改时触发datatrigger

我正在尝试在datagrid单元格的值更改时在数据网格中的单元格上执行动画.

datagrid本身绑定到普通旧CLR对象的ObservableCollection.在这种情况下,假设对象是具有"名字","姓氏"和"年龄"属性的"人物"对象.'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>
Run Code Online (Sandbox Code Playgroud)

当我的ObservableCollection中的对象更新(我更改了FirstName值)时,数据网格会更新.根据上面的例子,如果我将FirstName的值更改为'Richard',那么动画也可以正常执行.

我的问题是我需要运行我的动画,无论Firstname的新值是什么.我已经爬网了,但有些人似乎只能找到触发已知值的触发器的例子,例如当FirstName是'Richard'时触发,就像我在我的例子中所展示的那样.

我的问题是,无论更新属性的值如何,我如何触发数据触发器?因此,基本上如何在为数据网格中的给定行更新FirstName属性时触发数据触发器.

非常感谢.

wpf datagrid datatrigger

25
推荐指数
1
解决办法
2万
查看次数

标签 统计

datagrid ×1

datatrigger ×1

wpf ×1