gpt4 book ai didi

c# - BitmapImage 在文件不存在时抛出初始化异常

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:35 25 4
gpt4 key购买 nike

我有这样的 XAMl

<Image x:Name="MyImage">
<Image.Source>
<BitmapImage UriSource="{Binding FullPhotoPath}" CacheOption="OnLoad" />
</Image.Source>
</Image>

只要 FullPhotoPath 存在,它就可以正常工作。如果没有,则抛出异常

Initialization of 'System.Windows.Media.Imaging.BitmapImage' threw an exception.

我意识到我可以只使用图片标签

要显示图像,如果它不存在则不显示任何内容(也不会抛出异常),但据我所知,此语法不允许我使用 CacheOption .

如果图片路径不存在,如何不显示任何内容?

最佳答案

您可以使用转换器创建您的 BitmapImage 以及您需要的任何设置,如果您发现该文件不存在,也可以只返回 null,然后只需通过转换器绑定(bind) Image.Source。

public class PathToBitmapImagelConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string path = value as string;

if (path == null || !File.Exists(path))
return null;

var bmp = new BitmapImage();
bmp.BeginInit();
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
bmp.EndInit();
return bmp;
}


public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

使转换器在某处可访问

<local:PathToBitmapImagelConverter x:Key="PathToBitmapImagelConverter"/>

然后在您的 XAML 中使用

<Image x:Name="MyImage" Source="{Binding FullPhotoPath, Converter={StaticResource PathToBitmapImagelConverter}}"/>

关于c# - BitmapImage 在文件不存在时抛出初始化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com