在Windows Phone 8.1运行时中,我们只能使用GetThumnailAsync()方法异步获取StorageItem的缩略图。
我正在尝试显示特定文件夹中的文件列表,并为Converter列表中的每个项目设置了缩略图。
但是,转换器必须同步运行。那么有什么可以做的吗?
不要在Converter中运行异步代码,而应在任务(GetThumbnail)完成后进行绑定。这是Stephen Cleary撰写的关于异步MVVM模式-应用程序:数据绑定的精彩文章。
您会发现那里有一个我可以使用-的类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}}"/>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句