我正在开发Windows Phone 8设备的旅行应用程序。搜索结果返回包含许多图像网址的许多记录。我想显示我的应用程序的默认图像,直到下载实际图像并设置为控制。
我在下面使用一个非常简单的代码。
<Image Margin="3"
Grid.Column="0"
Source="{Binding Thumbnail}"
HorizontalAlignment="Left"
Height="130" VerticalAlignment="Top" Width="130"/>
Thumbnail
字段返回要显示的图像的字符串url。
图像最终将如下所示。我希望在下载之前显示我的默认图像。
当图片不完全可用时,app应如下所示。
当它完全下载时,它应该如下所示。
答案 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(只是建议)。