How to remove ListView's add item animation?

本小妞迷上赌 提交于 2019-12-04 18:17:21

问题


I have a ListView and I edited its ItemContainerStyle to modify some style but I don't know how to remove that annoying animation when you add an item.

With an ItemsControl, when you add a new item, it appears instantly, without any animation.

With ListView, the item takes a while and then, it starts an animation to show up.

I just want to remove that add animation and when I click on Add item it appears instantly, no extra stuff.

I think that it should belong to ItemContainerStyle but even I commented out all visualstate animations and is still there. I'm missing something out.


回答1:


These animations are called transitions and they are part of ListViewStyle. To change it right click on ListView control in the designer and select Edit Template > Edit a Copy.... This will add the built-in style to your XAML.

The following part of the style is of interest to you:

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

I'm not sure which animation exactly you dislike but try removing AddDeleteThemeTransition and/or EntranceThemeTransition from TransitionCollection. It should do the trick.

Don't forget to make sure the modified style is applied to the desired ListView.




回答2:


It might be in the default ItemsPanel.

You could try something like this:

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

Why though do you want to go against the fluid part of the Fast and Fluid thing of the design language? Are you trying to implement something more bland than the templates or are you planning on adding your own transitions?




回答3:


Thanks to Damir's answer, this is how I did it. Just add this in your App.xaml

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



回答4:


As one of the comments mentioned, simply adding this did the trick for me:

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

No need for all the other code.




回答5:


In UWP, I created the following code to remove the animation:

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


来源:https://stackoverflow.com/questions/13556605/how-to-remove-listviews-add-item-animation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!