(WPF)Animate ListView项目移动

时间:2009-08-22 23:55:48

标签: wpf listview animation

我希望在ListView中的项目更改位置时有动画,因此它会慢慢移动到新位置。在模板或代码中。 我尝试从(虚拟化)StackPanel下载并重写ArrangeOverride来重新定位和动画项目。问题是我不知道该项目在更新之前的位置,所以我可以很好地过渡到新的位置。我尝试检查项目的TranslateTransform,存储在字典中,覆盖OnItemChanged并存储OldPosition / Position ..但没有一个工作,因为它似乎总是重新创建项目(来自模板)。

还有其他建议吗?

4 个答案:

答案 0 :(得分:6)

使用FluidMoveBehavior行为,它将使您的生活更轻松。

您可以按以下方式将此内容应用于任何itemscontrol

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

您可以在与Blend 3一起安装的Microsoft.Expression.Interactions.dll中找到此行为

答案 1 :(得分:1)

事实上,Dan Crevier在2006年完全解决了这个问题。请查看他的PanelLayoutAnimator课程。

答案 2 :(得分:0)

我意识到这并不完全是你所追求的,但是如果你找不到更好的东西,你可以看看Josh Smith的文章http://joshsmithonwpf.wordpress.com/2007/03/13/animated-filtering-of-listboxitems/

答案 3 :(得分:0)

@rravuri回答对我有用,你必须定义为动态资源,你可以直接申请然后调用它likethis ItemsPanel =“{DynamicResource ItemsPanelTemplate}”