我想为新创建的ListViewItem分配一个动画.像FadeIn或FadeOut.我有这个XAML代码:
<ListView Height="320" HorizontalAlignment="Left" Margin="630,0,0,0" Name="listView1" VerticalAlignment="Top" Width="222" ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="150"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.Resources>
</Grid.Resources>
<Image Name="img" Source="{Binding AvatarSource}" Width="32" Margin="8"></Image>
<Image Source="{Binding IconSource}" Width="16" Margin="0,-28,32,0"></Image>
<TextBlock Grid.Column="1" Margin="0,8,0,0" TextWrapping="Wrap">
<Run Text="{Binding Name}" FontWeight="Bold"></Run>
<LineBreak/>
<Run Text="{Binding StatusText}"></Run>
</TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
有没有办法访问jQuery中的任何方式:$('#listViewItemId').fadeIn();
我可以将listView1.ItemsSource绑定到某个可访问的表单,在其中我将看到其中的所有控件吗?而不是操纵它们?
我也不想在C#中手动执行此操作,但如果使用ItemTemplate无法完成此操作,我仍会执行此操作.
我是XAML的新手,我找不到任何好的资源来以正确的方式用C#学习XAML.
下面我发布了最简单的代码和XAML,实现了你想要的.从那里开始使其在您自己的应用程序中工作.
<Window x:Class="ListviewItemLoadedSpike.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Storyboard x:Key="FadeIn">
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
Duration="0:0:2" From="0" To="1"/>
</Storyboard>
<Style TargetType="Label" x:Key="FadingLabel">
<Style.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard Storyboard="{StaticResource FadeIn}"/>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<ListBox ItemsSource="{Binding Data}">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Info}"
Style="{StaticResource FadingLabel}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Name="AddButton"
Click="AddButton_Click">
Add Item
</Button>
</StackPanel>
</Window>
using System.Collections.ObjectModel;
using System.Windows;
namespace ListviewItemLoadedSpike
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private int counter;
public MainWindow()
{
InitializeComponent();
Data=new ObservableCollection<Datum>();
DataContext = this;
}
private void AddButton_Click(object sender, RoutedEventArgs e)
{
counter++;
Data.Add(new Datum(counter.ToString()));
}
public ObservableCollection<Datum> Data { get; set; }
}
public class Datum
{
public Datum(string info)
{
Info = info;
}
public string Info { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
祝好运!