Wpf 如何在数据绑定控件列表中逐个启动故事板

Wpf 如何在数据绑定控件列表中逐个启动故事板,wpf,silverlight,xaml,Wpf,Silverlight,Xaml,在Silverlight中(尽管我认为这也适用于WPF),我有一个Items控件,它绑定了一个URI列表 ItemsPanel是一个WrapPanel(来自Silverlight工具包),DataTemplate包含一个带有源代码绑定的图像 数据绑定图像显示良好 在每个绑定图像的xaml中,我有一个故事板,它由图像启动。在每个图像的EventTrigger上加载RouteEvent 故事板在1秒的时间内将图像不透明度从0增加到1 当同时运行所有图像“淡入”时 问题:如何延迟生成后续图像动画,使后

在Silverlight中(尽管我认为这也适用于WPF),我有一个Items控件,它绑定了一个URI列表

ItemsPanel是一个WrapPanel(来自Silverlight工具包),DataTemplate包含一个带有源代码绑定的图像

数据绑定图像显示良好

在每个绑定图像的xaml中,我有一个故事板,它由图像启动。在每个图像的EventTrigger上加载RouteEvent

故事板在1秒的时间内将图像不透明度从0增加到1

当同时运行所有图像“淡入”时

问题:如何延迟生成后续图像动画,使后续图像动画在前一个动画开始后不久启动?(想想墨西哥的浪潮)

更新:代码示例即将发布

<ItemsControl x:Name="Items1" ItemsSource="{Binding}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel></toolkit:WrapPanel>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border BorderBrush="#cccccc" BorderThickness="1" Margin="5">
                    <Image x:Name="myImage" Source="{Binding}" Width="100" Height="100" Stretch="Fill">
                        <Image.Triggers>
                            <EventTrigger RoutedEvent="Image.Loaded">
                                <BeginStoryboard>
                                    <Storyboard x:Name="myStoryboard">
                                        <DoubleAnimation Duration="00:00:03"
                            Storyboard.TargetName="myImage" 
                            Storyboard.TargetProperty="Opacity" 
                            From="0" To="1" />
                                    </Storyboard>
                                </BeginStoryboard>

                            </EventTrigger>
                        </Image.Triggers>
                    </Image>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>


我的建议是排一个
队列。这样,您可以启动第一个脚本,当它触发“已完成”事件时,您可以将下一个脚本出列并启动该脚本,当该脚本结束时,您可以将下一个脚本出列并启动该脚本,依此类推。

您可以将
DoubleAnimation.BeginTime
绑定到列表中ImageUri的索引。 当然,你必须使用转换器

class UriIndexConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int seconds = YourUriList.IndexOf(value); /* or something similar */

        return new TimeSpan(0, 0, seconds);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
双动画中

BeginTime="{Binding Converter={StaticResource UriIndexConverter}}"

我想我会在周末的某个时候试试这个。谢谢LPL的建议。我确实想知道绑定BeginTime和使用转换器是否有完美的意义。会让你知道事情的进展。嗯,弄清楚如何通过你的名单