如何删除ListView添加项目动画?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除ListView添加项目动画?相关的知识,希望对你有一定的参考价值。

我有一个ListView,我编辑了它的ItemContainerStyle来修改一些风格,但我不知道如何在添加项目时删除烦人的动画。

使用ItemsControl,当您添加新项目时,它会立即显示,没有任何动画。

使用ListView,该项目需要一段时间,然后,它会启动动画显示。

我只想删除那个add animation,当我点​​击Add item它立即出现,没有额外的东西。

我认为它应该属于ItemContainerStyle但是我甚至评论了所有的视觉状态动画并且仍然存在。我错过了一些东西。

答案

这些动画称为过渡,它们是ListViewStyle的一部分。要更改它,请右键单击设计器中的ListView控件,然后选择Edit Template> Edit a Copy...。这将为您的XAML添加内置样式。

您感兴趣的是以下部分风格:

<Setter Property="ItemContainerTransitions">
    <Setter.Value>
        <TransitionCollection>
            <AddDeleteThemeTransition/>
            <ContentThemeTransition/>
            <ReorderThemeTransition/>
            <EntranceThemeTransition IsStaggeringEnabled="False"/>
        </TransitionCollection>
    </Setter.Value>
</Setter>

我不确定你不喜欢哪个动画,但尝试从AddDeleteThemeTransition删除EntranceThemeTransition和/或TransitionCollection。它应该做的伎俩。

不要忘记确保将修改后的样式应用于所需的ListView

另一答案

它可能位于默认的ItemsPanel中。

你可以尝试这样的事情:

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <VirtualizingStackPanel>
            <VirtualizingStackPanel.ChildrenTransitions>
                <TransitionCollection/>
            </VirtualizingStackPanel.ChildrenTransitions>
        </VirtualizingStackPanel>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

为什么你要反对设计语言中Fast and Fluid的流畅部分呢?您是否尝试实施比模板更平淡的东西,或者您是否计划添加自己的过渡?

另一答案

感谢Damir的回答,这就是我做到的。只需在App.xaml中添加它即可

<Application...>
    <Application.Resources>
        <ResourceDictionary>
            ...
            <Style TargetType="ListView">
                <Setter Property="ItemContainerTransitions">
                    <Setter.Value>
                        <TransitionCollection/>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>
另一答案

在UWP中,我创建了以下代码来删除动画:

// Remove Add/Delete animations
TransitionCollection tc = _listView.ItemContainerTransitions;
for (int i = tc.Count - 1; i >= 0; i--) if (tc[i] is AddDeleteThemeTransition) tc.RemoveAt(i);

以上是关于如何删除ListView添加项目动画?的主要内容,如果未能解决你的问题,请参考以下文章

请问如何在listview删除item时添加动画效果呢?

请问如何在listview删除item时添加动画效果呢?

Flutter:在 ListView 中动画项目删除

带部分的 ListView,删除动画不适用于顶部项目

如何仅操作 ListView.builder 的一个元素

在片段中添加 ListView