C# 如何在wpf'中为列表中添加的新项目设置动画;s列表视图
我正在创建一个动态listviewC# 如何在wpf'中为列表中添加的新项目设置动画;s列表视图,c#,wpf,C#,Wpf,我正在创建一个动态listviewlstDummies,其中包含一个虚拟UserControllerdummyItem: dummyItem item; for (int i = 0; i < 100; i++) { item = new dummyItem (); lstDummies.Items.Add(item); } dummyItem; 对于(int i=0;i
lstDummies
,其中包含一个虚拟UserControllerdummyItem
:
dummyItem item;
for (int i = 0; i < 100; i++)
{
item = new dummyItem ();
lstDummies.Items.Add(item);
}
dummyItem;
对于(int i=0;i<100;i++)
{
项目=新的dummyItem();
lstmies.Items.Add(item);
}
以下是dummyItem XAML:
<UserControl x:Class="Kiosk.control.dummyItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
x:Name="dummyItem">
<Grid Background="BurlyWood">
<TextBox Text="hello world!" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBox>
</Grid>
</UserControl>
这是我的XAML:
<ListView Grid.Row="1" x:Name="lstDummies">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<EventTrigger RoutedEvent="Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.5">
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</ListView.Resources>
<ListView.ItemsPanel >
<ItemsPanelTemplate >
<UniformGrid VerticalAlignment="Top" HorizontalAlignment="Left" Columns="17"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
现在,当新项目添加到lstDummies时,我需要淡入淡出效果。这对我来说很好,即
不透明度设置为0
,然后在加载ListViewItem
后设置动画:
<ListView x:Name="lstDummies">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Opacity" Value="0" />
<Style.Triggers>
<EventTrigger RoutedEvent="Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2">
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</ListView.Resources>
<ListView.ItemsPanel >
<ItemsPanelTemplate >
<UniformGrid VerticalAlignment="Top" HorizontalAlignment="Left" Columns="17"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Rectangle Width="50" Height="50" Fill="Green" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
@dymanoid问题是淡入淡出动画不起作用。我希望新添加的项目显示在参考资料中定义的样式中,但我看不到正在使用它。将样式移动到列表视图。ItemContainerStyle
@Aakanksha ItemContainerStyle未识别这意味着什么?您无法添加ItemContainerStyle?,而不是ListView。资源将其设置为ListView.ItemContainerStyle。您确定吗?不适合我。延迟添加的项目不会褪色effect@PouyaAk你试过我的例子吗?矩形
应该淡入。尝试增加动画的持续时间以使其更清晰。我完全复制了您的代码,不幸的是,没有工作,添加的矩形没有褪色。我还增加了动画的持续时间和延迟时间,但没有
private async void Button_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
lstDummies.Items.Add(new dummyItem());
await Task.Delay(100);
}
}