gpt4 book ai didi

wpf - 如何在 DataBound 控件列表中依次启动 Storyboard

转载 作者:行者123 更新时间:2023-12-03 20:50:38 24 4
gpt4 key购买 nike

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

ItemsPanel 是一个 WrapPanel(来自 Silverlight 工具包),DataTemplate 包含一个与其源绑定(bind)的图像。

数据绑定(bind)图像显示良好。

在每个绑定(bind)图像的 xaml 中,我都有一个 Storyboard,该 Storyboard由每个图像的 EventTrigger 上的 Image.Loaded RoutedEvent 启动。

Storyboard在 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 绑定(bind)到 UriList 中 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();
}
}

在您的DoubleAnimation中:

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

关于wpf - 如何在 DataBound 控件列表中依次启动 Storyboard ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6959645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com