【问题标题】:Bind image from isolated storage and application directory从隔离存储和应用程序目录绑定图像
【发布时间】:2013-01-14 04:23:32
【问题描述】:
在我的 WP7 应用程序中,我有一个包含图像的列表框。我在我的应用程序中包含了几个图像,但如果找不到图像,则应从 Internet 检索它,然后当然将其存储在独立存储中。现在我有1-2个问题:
1)在初始应用程序启动时,我是否应该将所有图像复制到独立存储中,以便独立存储包含所有图像(因此应用程序图像文件夹中的图像可用两次:在应用程序图像目录和独立存储中)?
2) 列表框中是否可以在一种情况下显示来自 IsoloatedStorage 的图像,另一种情况下来自应用程序文件目录?
非常感谢!
附:欢迎使用代码示例,尤其是在 vb.net 中。
【问题讨论】:
标签:
vb.net
windows-phone-7
listbox
isolatedstorage
【解决方案1】:
1 - 不。为什么要浪费时间和存储空间?
2 - 可能的解决方案 - 编写一个实现 IValueConverter 的类。在您的 Convert 方法中,如果值为 Uri,且 IsAbsoluteUri=true 且 Scheme="isostore",则您从独立存储中读取文件,并返回 BitmapImage,as described here。否则,您只需从 Convert 方法返回未转换的值。并且,您在绑定中指定您的转换器。
抱歉,我没有可分享的代码示例。
附:对于您的任务,我建议使用名为“Kawagoe Toolkit”的 3 方库。唯一的缺点是许可证要求您在“关于”页面中提及它们。如果使用 Kawagoe,您可以只定义一个属性“imageSource”返回对象,并返回来自资源/XAP 的图像的 Uri,或者延迟加载从 Kawagoe 的 ImageCache.Default.Get() 方法获得的 ImageSource 对象,该方法最终会从要么是互联网的孤立商店。他们已经有了你需要的下载和缓存代码。
【解决方案2】:
- 是的,你最好把它们复制到统一位置。
- 为了什么?仅显示来自 IsolatedStorage 的图像。初始图像被复制到那里,新图像从互联网上下载并放到IsolatedStorage(当然你必须编写这段代码)。