如何删除ListView的“添加项”动画?

如何删除ListView的“添加项”动画?,listview,animation,windows-runtime,Listview,Animation,Windows Runtime,我有一个ListView,我编辑了它的ItemContainerStyle来修改一些样式,但我不知道如何在添加项目时删除那个恼人的动画 使用ItemsControl,当您添加新项目时,它会立即显示,而不显示任何动画 使用ListView,项目需要一段时间,然后开始显示动画 我只想删除添加动画,当我点击添加项目时,它会立即出现,没有额外的东西 我认为它应该属于ItemContainerStyle,但即使是我也注释掉了所有visualstate动画,并且仍然存在。我遗漏了一些内容。它可能在默认的It

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

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

使用ListView,项目需要一段时间,然后开始显示动画

我只想删除添加动画,当我点击添加项目时,它会立即出现,没有额外的东西


我认为它应该属于ItemContainerStyle,但即使是我也注释掉了所有visualstate动画,并且仍然存在。我遗漏了一些内容。

它可能在默认的ItemsPanel中

您可以尝试以下方法:

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

尽管如此,你为什么要反对设计语言中快速而流畅的部分呢?您是在尝试实现比模板更平淡的东西,还是打算添加自己的过渡?

这些动画称为过渡,它们是ListViewStyle的一部分。要更改它,请在设计器中的ListView控件上单击鼠标右键,然后选择“编辑模板>编辑副本…”。。。。这会将内置样式添加到XAML中

您对该样式的以下部分感兴趣:

<Setter Property="ItemContainerTransitions">
    <Setter.Value>
        <TransitionCollection>
            <AddDeleteThemeTransition/>
            <ContentThemeTransition/>
            <ReorderThemeTransition/>
            <EntranceThemeTransition IsStaggeringEnabled="False"/>
        </TransitionCollection>
    </Setter.Value>
</Setter>
我不确定您到底不喜欢哪个动画,但请尝试从TransitionCollection中删除AddDeleteThemeTransition和/或EntertTheMetransition。它应该会起作用


别忘了确保修改后的样式应用于所需的ListView。

在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);

多亏了达米尔的回答,我就是这样做的。只需将其添加到App.xaml中即可


正如前面提到的一条评论,简单地加上这一条对我来说是个好办法:

<ListView.ItemContainerTransitions> 
    <TransitionCollection/> 
</ListView.ItemContainerTransitions>

不需要所有其他代码。

除了建议删除的ItemContainerTransitions之外,还有一个可能需要删除的动画

在ListViewItem模板中有一个名为ContentPresenterTranslateTransform的转换动画,它将项目内容滑动到位。您只需从模板的故事板中删除该动画即可。

这将起作用-

listView.ItemContainerTransitions = null;
您必须为ItemContainerTransitions属性分配一个新引用或null。更改集合中已被此属性引用的值将不起作用

这行不通-

listView.ItemContainerTransitions.Clear();

因为它不适合我的应用程序。我的应用程序是一个记笔记的应用程序,非常简单,但是很吸引人。通过动画,它会减慢应用程序的速度。我只是想点击“添加”并在那里看到它,而不是看到它看起来有多漂亮。Metro中的动画不是关于漂亮的。它们是关于如何向用户提供微妙的提示。列表中的动画将向您显示确实添加了某个项目以及该项目的添加位置。如果没有它们,UI只会刷新到一个新的状态,用户有更好的机会对刚刚发生的事情感到困惑。至少理论上是这样的-我还没有看过你的应用程序我更喜欢你的方法。事实上,今天在了解ItemContainerTransitions之后,我可能会使用它,但我可能不会以某种方式使用它。当你有一个短列表时,你希望清除所有项目并添加新项目,动画有点重叠。。。这就是我禁用动画的原因。这就是我喜欢这个框架的原因。我是一名WPF开发人员,但似乎我还有很多东西要学。谢谢。伙计,复制整个样式/模板太麻烦了。而是在ListView元素中添加以下内容:
listView.ItemContainerTransitions.Clear();