如果缺少绑定路径文件,如何显示默认图像?
<Image Source="{Binding DisplayedBook.ImagePath}" />
我的解决方案:使用转换器,检查图像是否存在并返回相应的路径。
答案 0 :(得分:6)
如果你不想从ImagePath
getter返回默认图像,那么另一种方法是返回null。
public string ImagePath
{
get
{
return File.Exists(m_Path) ? m_Path : null;
}
}
并在XAML中使用Binding的TargetNullValue属性
<Image Source="{Binding DisplayedBook.ImagePath, TargetNullValue={StaticResource SomeImageResource}}" />
答案 1 :(得分:4)
如果您有与此XAML关联的代码隐藏(即非模板),您可以在ImageFailed事件上设置默认图像:
<Image Source="{Binding ImagePath}" ImageFailed="Image_ImageFailed" />
和处理程序:
private void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
Image image = e.Source as Image;
if (image != null)
image.Source = new BitmapImage(new Uri("http://SomeDefaultImagePath.jpg"));
}
答案 2 :(得分:1)
我不使用wpf,所以我不知道是否存在这样的特殊功能。
但我会在DisplayedBook.ImagePath
的getter方法中实现这样的东西。它检查文件是否存在,如果没有返回某个默认图像的路径。
答案 3 :(得分:1)
你可以这样做:
获取路径中图像的路径。
if (!File.Exists(path))
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(path);
image.DecodePixelWidth = Convert.ToInt32(img.Width);
image.EndInit();
//Set the image corresponding to that bound
this.img.Source = image;
}
答案 4 :(得分:0)
您还可以添加FallbackValue
属性,该属性获取或设置当绑定无法返回值时要使用的值。