显示默认图像,直到图像下载wp8

时间:2014-01-22 09:51:06

标签: image windows-phone-8

我正在开发Windows Phone 8设备的旅行应用程序。搜索结果返回包含许多图像网址的许多记录。我想显示我的应用程序的默认图像,直到下载实际图像并设置为控制。

我在下面使用一个非常简单的代码。

 <Image  Margin="3"
Grid.Column="0"  
Source="{Binding Thumbnail}"
HorizontalAlignment="Left" 
Height="130" VerticalAlignment="Top" Width="130"/>

Thumbnail字段返回要显示的图像的字符串url。

图像最终将如下所示。我希望在下载之前显示我的默认图像。

当图片不完全可用时,app应如下所示。

enter image description here

当它完全下载时,它应该如下所示。

enter image description here

4 个答案:

答案 0 :(得分:2)

我发现的最佳解决方案(我在我的应用程序中使用)只是使用Coding4Fun控件库!它有一个名为SuperImage的控件,它有一个名为PlaceHolder的额外属性,您可以在其中设置默认图像,并在下载实际图像时 - 通过Source属性设置 - 它会淡出并淡出在这个实际的图像中!

请点击此处了解更多详情http://metronuggets.com/2013/06/11/coding4fun-toolkit-introducing-superimage/

答案 1 :(得分:0)

尝试动态添加。

 Uri uri = new Uri("image.png", UriKind.Relative);
 ImageSource imgSource = new BitmapImage(uri);
 img_result.Source = imgSource;

imgSource设置为您绑定的类。

答案 2 :(得分:0)

     <Image x:Name ="img" Margin="3" Grid.Column="0"  Source="{Binding Thumbnail}"HorizontalAlignment="Left" Height="130" VerticalAlignment="Top" Width="130"/>

你可能在View Model中有一个函数在加载时更新Image,所以在xaml中你可以给你img.Source =“/ Assets / Images / dragon.png”无论你的默认图像是什么,当你调用它时函数,它返回您可以将其更改为图像的值。

答案 3 :(得分:0)

只需在Image布局中使用两个Grid控件,一个使用本地占位符源,另一个使用远程Binding。一旦远程图像被渲染,它就会覆盖本地占位符图像。

<Grid Grid.Column="0">
    <Grid.Resources>
        <Style TargetType="Image">
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="VerticalAlignment" Value="Top"/>
            <Setter Property="Height" Value="130"/>
            <Setter Property="Width" Value="130"/>
            <Setter Property="Margin" Value="3"/>
        </Style>
    </Grid.Resources>
    <Image Source="Assets/Placeholder.png"/>
    <Image Source="{Binding Thumbnail}"/>
</Grid>

为了获得更好的效果,我通常会订阅远程图像的ImageOpened事件,触发StoryBoard动画,将远程图像的不透明度从0更改为1(只是建议)。