使用MvxImageViewLoader加载资源图像,是否可能?

时间:2013-08-27 09:58:53

标签: xamarin.ios xamarin mvvmcross

我在MvxTableViewCell中使用mvvmcross绑定,单元格元素是UIImageView和2个标签。

这些“行”/单元格将列出一组预定义元素,这些元素的图像是存在于Resources目录(包资源)内或互联网上任何位置的png文件。

由于我可能会在捆绑包和互联网上存在这种混合图像,因此我想使用MvxImageViewLoader。

视图模型有一个对象列表,其中包含一个属性,即图像uri,对于资源图像,我尝试了几种解决方案: - NSBundle.MainBundle.ResourcePath +“/ xpto.png” - “file://”+ NSBundle.MainBundle.ResourcePath +“/ xpto.png”

互联网上的所有图片都没有任何问题。

是否可以使用MvxImageViewLoader加载资源文件夹中存在的图像?我应该使用转换器吗?

感谢您的帮助,

Luis Pinho

1 个答案:

答案 0 :(得分:4)

Touch上的MvvmCross DownloadCache插件将图像加载解析为:MvxTouchLocalFileImageLoader - 请参阅https://github.com/slodge/MvvmCross/blob/v3/Plugins/Cirrious/DownloadCache/Cirrious.MvvmCross.Plugins.DownloadCache.Touch/MvxTouchLocalFileImageLoader.cs

这使用res:作为方案/前缀来检测资源文件是否已被请求,然后使用UIImage.FromFile加载它们。

由于其他平台不支持使用相同前缀的资源文件,因此您可能会发现在迁移到多个平台时需要使用值转换器。

或者,您可以轻松实现从MyImageView继承的自己的MvxImageView控件,该控件将拦截绑定属性并决定是下载还是从资源中显示它。