【发布时间】:2012-08-25 03:35:06
【问题描述】:
我正在尝试使用转换器检查本地存储中是否存在图像源。如果不使用外部网址。
<Image Source="{Binding Image, Converter={StaticResource ImageCacheConverter}}"/>
到目前为止,这是我的转换器:
public object Convert(object value, Type targetType, object parameter, string language)
{
return IfFileExist((string)value, "localimage.png");
}
public async Task<string> IfFileExist(string value, string filename)
{
var folder = ApplicationData.Current.LocalFolder;
var getFilesAsync = await folder.GetFilesAsync(CommonFileQuery.OrderByName);
var file = getFilesAsync.FirstOrDefault(x => x.Name == filename);
if (file != null)
{
return "ms-appdata:///local/" + filename;
}
return (string)value;
}
我面临的主要问题是 IValueConverter 内部有异步。但我需要返回 IfFileExist 来更改图像源。
提前致谢。
【问题讨论】:
-
为什么还是
IfFileExistasync? -
导致等待文件夹.GetFilesAsync(CommonFileQuery.OrderByName);
-
您确定要将一个可能很慢的操作作为绑定的一部分吗?如果文件被移动,我会缓存信息并添加一些错误处理。这个方法是有原因的
async! -
我正在尝试检查图像是否缓存在本地存储中。它应该是一个正常的转换器工作。我是 C# 新手。
标签: c# xaml windows-runtime converter