Как удалить анимацию элемента списка ListView?
У меня есть ListView
, и я отредактировал его ItemContainerStyle
, чтобы изменить какой-то стиль, но я не знаю, как удалить эту надоедливую анимацию при добавлении элемента.
С ItemsControl
, когда вы добавляете новый элемент, он появляется мгновенно, без какой-либо анимации.
С помощью ListView
элемент занимает некоторое время, а затем запускает анимацию, чтобы показать его.
Я просто хочу удалить этот add animation
, и когда я нажимаю Add item
, он появляется мгновенно, без лишних вещей.
Я думаю, что он должен принадлежать ItemContainerStyle
, но даже я закомментировал все анимации визуального состояния и все еще там. Я что-то упустил.
Ответы
Ответ 1
Эти анимации называются переходами, и они являются частью 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
.
Ответ 2
Он может быть в позиции ItemsPanel по умолчанию.
Вы можете попробовать что-то вроде этого:
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel>
<VirtualizingStackPanel.ChildrenTransitions>
<TransitionCollection/>
</VirtualizingStackPanel.ChildrenTransitions>
</VirtualizingStackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
Почему, хотя вы хотите пойти против жидкой части Быстрого и Жидкого на языке дизайна? Вы пытаетесь реализовать что-то более мягкое, чем шаблоны, или планируете добавить свои собственные переходы?
Ответ 3
Спасибо Дамиру ответ, вот как я это сделал. Просто добавьте это в свой App.xaml
<Application...>
<Application.Resources>
<ResourceDictionary>
...
<Style TargetType="ListView">
<Setter Property="ItemContainerTransitions">
<Setter.Value>
<TransitionCollection/>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
Ответ 4
Как уже упоминалось в одном из комментариев, простое добавление этого помогло мне:
<ListView.ItemContainerTransitions>
<TransitionCollection/>
</ListView.ItemContainerTransitions>
Нет необходимости во всем другом коде.
Ответ 5
В 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);