Я пытаюсь добавить анимацию к недавно добавленному элементу и/или измененному элементу в моем списке, вот что я сделал до сих пор:
<Style x:Key = "ListBoxItemStyle4" TargetType = "{x:Type ListBoxItem}">
<Setter Property = "LayoutTransform">
<Setter.Value>
<ScaleTransform x:Name = "transform" />
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent = "Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty = "Opacity" From = "0" To = "1" Duration = "0:0:2" />
<DoubleAnimation Storyboard.TargetProperty = "LayoutTransform.ScaleY" From = "0" Duration = "0:0:.2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
Это оживляет каждый элемент в моем списке.
Я не уверен на 100%. Но попробуйте изменить RoutedEvent на SourceUpdated. docs.microsoft.com/en-us/dotnet/api/…
Эй, проверьте это. stackoverflow.com/questions/2242571/…
Нашел еще одну статью, похожую на то, что вы делаете. stackoverflow.com/questions/2269505/…
Возможный дубликат Обработчик события, который будет вызываться при добавлении элемента в список.
В этой статье описан рабочий пример:
Он применяет анимацию через itemcontainerstyle:
<ListBox ItemsSource = "{Binding Messages}" BorderBrush = "Transparent" Background = "LightGray">
<ListBox.ItemContainerStyle>
<Style TargetType = "{x:Type ListBoxItem}">
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate TargetType = "{x:Type ListBoxItem}">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property = "LayoutTransform">
<Setter.Value>
<ScaleTransform/>
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent = "Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty = "Opacity" From = "0" To = "1" Duration = "0:0:1.2" FillBehavior = "Stop" />
<DoubleAnimation Storyboard.TargetProperty = "LayoutTransform.ScaleY" From = "0" Duration = "0:0:1.2" FillBehavior = "Stop">
<DoubleAnimation.EasingFunction>
<BounceEase Bounces = "2" Bounciness = "6"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
Также рассматривается анимация перед удалением.
@Tejus Можно ли отправить команду из кода для запуска анимации для одного элемента. Что-то вроде:
listBox12.Items.GetItemAt(i)