如何在DataTemplate中显示不同的图像
本文关键字:图像 显示 DataTemplate | 更新日期: 2023-09-27 17:51:00
在ListView的DataTemplate中,我有以下代码
<Image Grid.Column = "1" Grid.ColumnSpan = "2" Grid.Row = "0" Source = "{Binding Picture}" VerticalAlignment = "center" />
我是一个绑定图片属性。此属性是一个字符串,包含web上图像的地址。我如何在没有互联网连接的情况下显示我在项目中的图像?
一个快速的方法是订阅ImageFailed
事件:
<Image Source="{Binding Picture}" ImageFailed="ImageFailed" />
然后,在事件处理程序中,将Source
属性更改为本地图片:
private void ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
((Image)sender).Source = new BitmapImage(new Uri("ms-appx:///Assets/WideLogo.scale-240.png"));
}
此链接表示存在Image.ImageFailed
事件。您可以在其处理程序中设置另一个源。
或者,您可以在视图模型代码中检查互联网连接,并将图片值设置为"ms-appx:///Assets/image_name.png"
根据使用情况(例如在GridView中显示图像,其中您知道目标图像大小),另一种选择是始终显示默认图像,然后如果并且当正确的图像被下载时,它将显示在默认图像的顶部。
只要列出两张图片,第二张就会显示在第一张上面。
<Grid>
<Image Source="{Binding DefaultPicture}" />
<Image Source="{Binding Picture}" />
</Grid>
您可以尝试使用转换器。只需使用IValueConverter和HttpClient来检查文件是否存在于互联网上。如果HttpClient失败,返回本地图像URL。