在 Windows Phone 8.1 Runtime 中,我们只能使用 GetThumnailAsync() 方法异步获取 StorageItem 的缩略图。
我正在尝试显示特定文件夹中的文件列表,并为转换器列表中的每个项目设置缩略图。
但是转换器必须同步运行。那么有没有办法做到这一点?
最佳答案
不要在 Converter 中运行异步代码,而是在任务 (GetThumbnail) 完成后让您的绑定(bind)工作。 Here is a nice post from Stephen Cleary 关于异步 MVVM 的模式 - 应用程序:数据绑定(bind)。
你会在那里找到一个我认为你可以使用的类 - NotifyTaskCompletion
。在代码中定义:
public NotifyTaskCompletion<BitmapImage> MyThumbnail { get; set; }
// run somewhere your async job:
MyThumbnail = NotifyTaskCompletion<BitmapImage>(file.GetThumnailAsync());
然后在 xaml 中,您肯定可以使用转换器,该转换器将在任务返回其结果后立即运行:
<Image Source="{Binding MyThumbnail.Result}" Visibility="{Binding
MyThumbnail.IsSuccessfullyCompleted, Converter={StaticResource BooleanToVisibilityConverter}}"/>
关于c# - 在 Converter 中显示 StorageItem 缩略图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25598874/