0

我正在动态绑定到 Image 控件的源属性。

<Image x:Name="ThumbnailImage" Stretch="Fill" Source="{Binding Thumbnail}"/>

缩略图是一个 URL。这种方法有两个问题:

  1. 我想在即将显示使用 URL 下载的图像时制作动画。我正在使用这段代码:

           <Grid.Triggers>
                <EventTrigger RoutedEvent="Image.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation 
                                Storyboard.TargetName="ThumbnailImage"
                                Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)"
                                Duration="0:0:0.5" From="1" To="0" />
                            <DoubleAnimation
                                Storyboard.TargetName="ThumbnailImage"
                                Storyboard.TargetProperty="Opacity"
                                Duration="0:0:0.5" From="0" To="1" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Grid.Triggers>
    

它工作得很好,但只有当图像被缓存并在创建图像控件的同一时刻显示时。我认为 RoutedEvent "Image.Loaded" 仅在创建 Image 控件时触发,而不是在下载 Source 属性的图像时触发。

  1. 在同一个应用程序中,我想在加载所有图像时隐藏 ProgressBar。怎么做?

此致

4

1 回答 1

0

改变整个方法怎么样?

在 xaml 中设置

 <image x:name= "imagebox"/> 

opacity 为 0,将 Event on Opacity change 写入 100%;

在 C# 中这样做:

BitmapImage image = new BitmapImage(new Uri(URL));
image.Loaded+= (s, e) => //event fires when picture is fully loaded from URL
{
    imagebox.Source = image; // give image to picturebox but it won't show because opacity is set to 0
    VisualStateManager.GoToState(this, "ShowPicture", true); //This will trigger the Visual State to show picture smoothly
};
于 2013-08-27T16:46:59.200 回答