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

时间:2012-11-25 23:14:11

标签: listview animation windows-runtime

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

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

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

我只想删除add animation,当我点击Add item时,它会立即显示,没有额外的内容。

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

7 个答案:

答案 0 :(得分:16)

这些动画称为过渡,它们是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

答案 1 :(得分:4)

它可能位于默认的ItemsPanel中。

您可以尝试这样的事情:

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

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

答案 2 :(得分:2)

感谢达米尔的回答,这就是我做到的。只需在 App.xaml

中添加此内容即可
<Application...>
    <Application.Resources>
        <ResourceDictionary>
            ...
            <Style TargetType="ListView">
                <Setter Property="ItemContainerTransitions">
                    <Setter.Value>
                        <TransitionCollection/>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

答案 3 :(得分:1)

这将起作用-

listView.ItemContainerTransitions = null;

您必须为ItemContainerTransitions属性分配一个新引用(或空值)。更改此属性已引用的集合中的值将不起作用。

这行不通-

listView.ItemContainerTransitions.Clear();

答案 4 :(得分:0)

正如提到的评论之一,简单地添加一下就对我有用:

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

不需要其他所有代码。

答案 5 :(得分:0)

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

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

答案 6 :(得分:-1)

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