从不同项目随机开始的列表视图项动画



我正在尝试为我的列表视图项目制作"消失"动画。

我有两个动画,一个是双精度动画,它将不透明度从 1 到 0 进行动画处理,另一个是厚度动画,它将边距从 0,0,0,0 到 50,0,0,0,0 进行动画处理。

如果我将其设置为堆栈面板的样式(在Listview.Itemtemplate中),它们都会同时进行动画处理,这看起来有点无聊。所以我想让每个对象随机开始动画。在 WPF 中是否有执行此操作的好方法?

动画由数据触发器触发。

要正确实现这一点,您需要实现一个自定义Panel来执行此操作。如果您以前没有这样做过,这并不难,绝对是所有 WPF 开发人员在需要时都应该做的事情。您可以在 MSDN 上"面板概述"页的"自定义面板元素"部分找到大量信息和代码示例。另请参阅有关 WPF Tutorial.net 的如何在 WPF 中创建自定义布局面板一文

因此,这将使您了解如何创建自定义Panel...基本上,您只实现两个MeasureOverrideArrangeOverride方法,您可以在其中访问相关集合控件中的元素。我有几个这样的动画Panel,我可以通过ArrangeOverride方法对每个孩子的Opacity进行动画处理,如下所示:

private void AnimateOpacity(UIElement child, double from, double to, 
    TimeSpan animationDuration, EventHandler animationCompletedHandler)
{
    DoubleAnimation opacityAnimation = new DoubleAnimation(from, to, animationDuration,
        FillBehavior.HoldEnd);
    if (animationCompletedHandler != null) opacityAnimation.Completed += 
        animationCompletedHandler;
    child.BeginAnimation(UIElement.OpacityProperty, opacityAnimation, 
        HandoffBehavior.Compose);
}

最新更新