当ListView中的项目更改位置时,我希望有一个动画,以便它可以缓慢移动到新位置。在模板或代码中。
我试过从(Virtualizing)StackPanel降级并覆盖ArrangeOverride以重新定位项目并为其设置动画。问题是我不知道该项目在更新之前的哪个位置,所以我可以很好地过渡到新位置。我尝试检查该项目的TranslateTransform,将其存储在字典中,覆盖OnItemChanged并存储OldPosition/Position ..但这些都无济于事,因为似乎总是从(从模板)重新创建了该项目。

还有其他建议吗?

最佳答案

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

您可以按以下方式将此方法应用于任何项目控件

<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中找到此行为

关于wpf - (WPF)Animate ListView项移动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1317367/

10-13 02:33