【问题标题】:How can I display images from an arbitrary folder in Xamarin Forms on Windows 8如何在 Windows 8 上的 Xamarin Forms 中显示任意文件夹中的图像
【发布时间】:2016-04-10 06:23:18
【问题描述】:

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

Xamarin Forms Image 通常采用文件名(无路径)或 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);

我发现的大多数文章都解释了如何将图像与应用程序捆绑在一起作为源代码的一部分;我需要再次将它们从文件夹中显示在应用程序中,而无需将它们与应用程序捆绑在一起。用户应该能够将更多图像添加到文件夹中,并且他们可以在应用程序中工作而无需重新编译/重新安装 - 就像一个图像库。

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

【问题讨论】:

    标签: xamarin xamarin.windows


    【解决方案1】:

    您需要编写一个特定于平台的类来读取图像并返回可由 StreamImageSource 使用的流。然后您可以使用DependencyService 将此行为公开给您的Forms PCL。

    或者,您可以使用PCLStorage

      var f = await FileSystem.Current.LocalStorage.GetFileAsync (path);
    
      Stream s = await f.OpenAsync (FileAccess.Read);
      image.Source = ImageSource.FromStream(() => s);
    

    【讨论】:

    • 我可以使用 PCLStorage 从磁盘读取文本文件(参见上面的注释)。这可以用于图像吗?
    • 是的,您应该能够返回 StreamImageSource 可以使用的流
    • 有效!谢谢你。我需要了解整个 asyc / await 模式(我只是一个业余的 c# 开发人员:-),但传递一个流是有效的。非常感谢。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 2020-09-05
      • 2018-04-22
      • 2016-06-15
      • 2018-03-29
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多