(WPF)动画ListView项举措((WPF) Animate ListView item mov

2019-08-02 04:57发布

我想,当ListView中的项目改变位置有一个动画,所以它会慢慢地移动到新的位置。 无论是在模板或代码。 我试图从(虚拟化)的StackPanel下降并重写ArrangeOverride重新定位和动画项目。 问题是,我不知道在什么位置处的项目是“之前”的更新,所以我可以很好地过渡到新的位置。 我试图检查项目的TranslateTransform,在字典中存储,覆盖OnItemChanged和存储OldPosition /位置..但有没有工作,因为它似乎在项目总是重建(从模板)。

任何其他的建议?

Answer 1:

使用FluidMoveBehavior行为,它会让你的生活变得更加简单。

您可以通过以下方式将此任何的ItemsControl

<ItemsPanelTemplate x:Key="ItemsPanelTemplate">
            <WrapPanel>
                <i:Interaction.Behaviors>
                    <il:FluidMoveBehavior AppliesTo="Children" Duration="00:00:00.75"/>
                </i:Interaction.Behaviors>
            </WrapPanel>
</ItemsPanelTemplate>

你可以找到与混合3一起安装在Microsoft.Expression.Interactions.dll这种行为



Answer 2:

事实上,这个问题是由丹Crevier回在2006年完美解决检查出他的PanelLayoutAnimator类。



Answer 3:

我知道这是不是你的确切位置后,但如果你不能找到更好的东西,你可以看看约什-史密斯的文章http://joshsmithonwpf.wordpress.com/2007/03/13/animated-filtering-的-listboxitems /



Answer 4:

@rravuri答案为我工作,你必须定义,你可以直接申请,然后把它likethis ItemsPanel动态资源=“{DynamicResource ItemsPanelTemplate}”



文章来源: (WPF) Animate ListView item move