在滚动期间动画化DataGridRow时崩溃

时间:2014-10-24 02:25:41

标签: wpf wpfdatagrid

我试图让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}" />

0 个答案:

没有答案