繁体   English   中英

动画化WPF DataGrid IsSelected创建内存泄漏

[英]Animating WPF DataGrid IsSelected creating memory leaks

我有一个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上完成的。 还将Storyboard添加到DataGridCell样式中,以在选定行时增加FontSize。 我敢肯定,我没有正确地制作动画。 但是,当我尝试使用RemoveStoryBoard时,动画并不流畅。

任何的意见都将会有帮助。

我找到了一个解决方案,因为StoryBoards有一个大错误,所以必须致电垃圾收集器。 在加载“ imagen”之前尝试以下操作:

GC.Collect();
GC.WaitForPendingFinalizers();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM