我在MvxTableViewCell中使用mvvmcross绑定,单元格元素是UIImageView和2个标签。
这些“行”/单元格将列出一组预定义元素,这些元素的图像是存在于Resources目录(包资源)内或互联网上任何位置的png文件。
由于我可能会在捆绑包和互联网上存在这种混合图像,因此我想使用MvxImageViewLoader。
视图模型有一个对象列表,其中包含一个属性,即图像uri,对于资源图像,我尝试了几种解决方案: - NSBundle.MainBundle.ResourcePath +“/ xpto.png” - “file://”+ NSBundle.MainBundle.ResourcePath +“/ xpto.png”
互联网上的所有图片都没有任何问题。
是否可以使用MvxImageViewLoader加载资源文件夹中存在的图像?我应该使用转换器吗?
感谢您的帮助,
Luis Pinho
答案 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
控件,该控件将拦截绑定属性并决定是下载还是从资源中显示它。