-1

在我们的 WPF 应用程序中,我们有 IObservable,它是从我们的服务器中填充的。当我们转向新的 .NET 4.5 功能(异步、等待)时,首先我们只加载没有图像的 ReturnItems,在成功下载后我们也使用 Parallel.Foreach() 来加载关联的图像。

当每个项目的图像下载完成时,字节 [] 被分配给 ReturnItems CoverImage 属性,并且从我的 UI DataTemplate s Image 元素也绑定到此属性。

我想要实现的是动画这个图像加载过程,所以当图像完成加载时会有某种从无到有的淡入淡出动画。如果可能的话,我想使用故事板。

4

1 回答 1

0

我假设在你设置图像的来源之前它是null,即它不是一个空数组或类似的。如果是这样,请将此样式用于图像:

<Style x:Key="StyleImageFadeIn"
       TargetType="{x:Type Image}">
    <Setter Property="Opacity"
            Value="0" />
    <Style.Triggers>
        <!--Sets visibility to Collapsed if Source is null - this will cause IsVisible to be false-->
        <Trigger Property="Source"
                 Value="{x:Null}">
            <Setter Property="Visibility"
                    Value="Collapsed" />
        </Trigger>
        <!--Fades-in the image when it becomes visible-->
        <Trigger Property="IsVisible" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <BeginStoryboard.Storyboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                             To="1"
                                             Duration="0:0:1"/>
                        </Storyboard>
                    </BeginStoryboard.Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
            <!--This (ExitActions) is only necessary if the image is "loosing" its source at run-time-->
            <Trigger.ExitActions>
                <BeginStoryboard>
                    <BeginStoryboard.Storyboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                             To="0"
                                             Duration="0:0:0" />
                        </Storyboard>
                    </BeginStoryboard.Storyboard>
                </BeginStoryboard>
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
</Style>
于 2013-01-10T10:19:41.753 回答