C# 为WPF DataGrid设置动画会导致内存泄漏

C# 为WPF DataGrid设置动画会导致内存泄漏,c#,wpf,memory-leaks,datagrid,C#,Wpf,Memory Leaks,Datagrid,我有一个WPF应用程序,其中有4行的DataGrid。我有一个DataTrigger,可以使用BeginStoryBoard设置选择的动画。每次选择更改都会造成一堆内存泄漏。太奇怪了 <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsSelected}" Value="True"> <Da

我有一个WPF应用程序,其中有4行的DataGrid。我有一个DataTrigger,可以使用BeginStoryBoard设置选择的动画。每次选择更改都会造成一堆内存泄漏。太奇怪了

<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsSelected}" Value="True">
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="valueTextBlock" 
                                                       To="375" FillBehavior="HoldEnd" BeginTime="00:00:00.0" Duration="00:00:00.4"></DoubleAnimation>
                            <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="valueTextBlock"
                                                       To="375" FillBehavior="HoldEnd" BeginTime="00:00:00.0" Duration="00:00:00.4"></DoubleAnimation>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="valueTextBlock" 
                                                       To="1" FillBehavior="HoldEnd" BeginTime="00:00:00.0" Duration="00:00:00.4"></DoubleAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
                <DataTrigger.ExitActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="valueTextBlock"
                                                       To="300" FillBehavior="HoldEnd" BeginTime="00:00:00.0" Duration="00:00:00.4"></DoubleAnimation>
                            <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="valueTextBlock"
                                                       To="300" FillBehavior="HoldEnd" BeginTime="00:00:00.0" Duration="00:00:00.4"></DoubleAnimation>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="valueTextBlock" 
                                                       To="0.5" FillBehavior="HoldEnd" BeginTime="00:00:00.0" Duration="00:00:00.4"></DoubleAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.ExitActions>
                <DataTrigger.Setters>
                    <Setter Property="BorderBrush" Value="{StaticResource brushTextBox_Border_Focused}" TargetName="valueTextBlock" />
                </DataTrigger.Setters>
            </DataTrigger>

这是在DataTemplate上完成的。此外,故事板还添加到DataGridCell样式中,以在选中行时增加字体大小。我确信,我做动画的方式不正确。但当我尝试使用RemoveStoryBoard时,动画并不平滑


任何建议都会很有帮助。

我找到了一个解决方案,你必须给垃圾收集器打电话,因为故事板有一个很大的bug。在加载“imagen”之前尝试此操作:


我建议你使用你的动画。但是你可以做的是通过设置Storyboard.DesiredFrameRate来降低动画的帧速率以降低CPU负载。默认值为60帧/秒。我建议您将上述帧速率降低到10-30之间。@AshokRathod事实上,我做到了。它不多,我正在获得。。。我还添加了RemoveStoryboard,获得的内存根本没有释放…我不认为,这是一个解决方案。这解决了这个场景中的一个问题。
GC.Collect();
GC.WaitForPendingFinalizers();