如何在 Windows 8 上的 Xamarin Forms 中显示任意文件夹中的图像

How can I display images from an arbitrary folder in Xamarin Forms on Windows 8

这可能是一个死马,但我需要能够在我的 Xamarin 应用程序之外提供一个充满图像的本地文件夹 - 不是作为资源,不需要编译来添加更多图像 - 并在应用程序中显示这些图像, 在图像对象中。我的主要目标平台是 Windows 10。其他的很好,不是必需的。

Xamarin Forms 图像通常采用文件名(无路径)或 URI。我无法获得任何一种方法来定位和显示来自本地文件系统的图像。我一定是做错了什么。

非工作示例:

Image i = new Image();
i.Source = ImageSource.FromFile(some.png); // Needs to be from folder on local disk
grid.Children.Add(i, c, r);

我找到的大多数文章都解释了如何将图像作为源的一部分与应用程序捆绑在一起;我需要再次从文件夹中将它们显示在应用程序中,而不将它们与应用程序捆绑在一起。用户应该能够向该文件夹添加更多图像,并且他们可以在没有 recompiling/reinstalling 的应用程序中工作 - 就像一个图片库。

编辑:我能够使用 PCLStorage https://github.com/dsplaisted/pclstorage 成功读取文本文件。有没有办法将其连接到 Xamarin 表单图像?

基本上,你不能。如果您不将图像与您的应用程序捆绑在一起,则您必须以某种方式将图像传输到应用程序。最常见的情况是您在某处的网络服务器上提供这些图像,应用程序从该网络服务器下载图像。

您需要编写特定于平台的 class 来读取图像和 return 可以被 StreamImageSource 使用的流。然后您可以使用 DependencyService 将此行为暴露给您的表单 PCL。

或者,您可以使用 PCLStorage

  var f = await FileSystem.Current.LocalStorage.GetFileAsync (path);

  Stream s = await f.OpenAsync (FileAccess.Read);
  image.Source = ImageSource.FromStream(() => s);