如何制作动画 ListView?

How to make an animated ListView?

我意识到故事板只能与 silverlight Wp 8.1 应用程序一起使用。那么非银光呢?我想在页面转换后制作平滑出现的列表视图元素的动画。我怎样才能做到?我检查了 VisualStateGroup,但要制作这样的动画,我应该在后面制作代码。是否可以仅通过XAML制作?

如果您想使用 XAML,您可以使用内置的过渡,您可以从已经预定义的过渡中进行选择。一个缺点是您无法通过这种方式创建自己的过渡。

要更改项目转换,请更改 ListView 上的 ItemContainerTransitions 属性:

<ListView x:Name="MyListView">
    <ListView.ItemContainerTransitions>
        <TransitionCollection>
            <!--<ContentThemeTransition HorizontalOffset="0"/>-->
            <!--<EntranceThemeTransition />-->
            <!--  <AddDeleteThemeTransition />  -->
            <!--  <RepositionThemeTransition/>  -->
            <!--  <ReorderThemeTransition />  -->
            <!--  <PopupThemeTransition/>  -->
            <!--  <EdgeUIThemeTransition Edge="Top"/>  -->
        </TransitionCollection>
    </ListView.ItemContainerTransitions>
</ListView>

您可以根据需要组合它们。只需取消注释上述任何代码并使用最适合您的代码即可。

您可以在扩展 ListView 并覆盖 GetContainerForItemOverridePrepareContainerForItemOverride 方法时创建自定义项目动画。例如,如果您想要将 Storyboard 定义为 StaticResource,则可以使用 XAML。这是一个例子:

    public class MyListView : ListView
    {
        protected override DependencyObject GetContainerForItemOverride()
        {
            var container = base.GetContainerForItemOverride();
            var da = new DoubleAnimation();
            // init da...
            var sb = new Storyboard();
            // initi sb with container
            sb.Begin();
            return container;
        }

        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);

            var da = new DoubleAnimation();
            // init da...
            var sb = new Storyboard();
            // initi sb with element
            sb.Begin();
        }
    }