我试图让DataGridRow的背景颜色在其数据发生变化时自行设置动画。我使用了this post中的建议,并将动画连接到TargetUpdated事件。首次加载数据,滚动数据和数据更改时,将触发此动画。
我最大的问题是,当我尝试使用鼠标拖动滚动条滚动时,我会遇到以下类型的崩溃:
System.InvalidOperationException: Cannot animate 'Background.Color' on an immutable object
当我使用箭头按钮滚动时,没有崩溃。如果我到达列表的底部,然后才开始用鼠标拖动滚动条,那么就不会崩溃。
任何人都可以告知为什么会发生这种崩溃吗?我基于其他阅读的最佳猜测是,同时运行单个元素的动画有几个,因为动画是通过滚动触发的(可能是由于元素重用和内容数据切换?)。在代码中明确地绑定到背景颜色当然没有任何内容。
我遇到的一个相关问题是,我只希望动画在数据实际发生变化时触发 - 而不是在我滚动时。
我道歉,我无法发布我的代码副本。我公司的政策使这个问题成为现实。这里有一个解释(希望能抓住所有重要细节):
<Style x:Key="RowStyle" TargetType="DataGridRow">
<Style.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<ColorAnimation From="Red" Duration="0:0:1" Storyboard.TargetProperty="Background.Color">
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
我感兴趣的数据列与以下内容类似:
<DataGridTextColumn Binding="{Binding Value, Mode=OneWay, NotifyOnTargetUpdated=True}" />