如何获得Image.Source作为字符串

问题描述:

It's easy to set a source for an image in Xamarin如何获得Image.Source作为字符串

using Xamarin.Forms; 
Image image = new Image; 
image.Source = "someImage.jpg"; 

但我不能做反向操作。
例如:给定一个图像的源代码已经设置,打印源代码。

Console.WriteLine ("Print Image source ==> {0}",image.Source); 
Console.WriteLine ("Print Image source ==> {0}",image.Source.ToString()); 

... 和一些更不相关的组合。

任何人都可以告诉我如何从图像中获取源代码(带有字符串)。

+1

什么是'Image',以及以何种方式读取属性不工作?我也看到你用'source'设置它,并用'Source'读取它们 - 它们实际上是分开的属性,还是这是一个错字,在这种情况下,你能显示你实际尝试编译的代码吗? – 2014-10-30 17:03:26

+0

第一个代码段也不起作用。假设你在谈论System.Drawing.Image,那么没有公共的'source'属性。无论如何,BCL公共成员名称永远不会以小写字母开头。 – 2014-10-30 17:03:33

+0

@Asad:注意xamarin标签。 http://iosapi.xamarin.com/?link=T%3aXamarin.Forms.Image – 2014-10-30 17:06:03

Xamarin.FormsImage.Source属性是类型的ImageSource的。

ImageSource的Xamarin.Forms有继承这个类等几类: -

  • FileImageSource
  • StreamImageSource
  • UriImageSource

您可以类型检查Image.Source看到Image.Source正在使用的执行,然后投它,并访问铸造对象的属性。

例如(假设ImageSource的FileImageSource),你会碰到这样的: -

Xamarin.Forms.Image objImage; 
.. 
.. 

.. 
if (objImage.Source is Xamarin.Forms.FileImageSource) 
{ 
    Xamarin.Forms.FileImageSource objFileImageSource = (Xamarin.Forms.FileImageSource)objImage.Source; 
    // 
    // Access the file that was specified:- 
    string strFileName = objFileImageSource.File; 
} 
+0

非常感谢,这只是一种魔法。 :) – Loebre 2014-10-31 08:47:08

+0

为我工作,非常感谢你 – 2016-11-29 09:22:35

它看起来像Xamarin.Forms.ImageSourceXamarin.Forms.ImageSource类型的财产,其中有一个隐含投从string。这就是为什么你可以做Image.Source = "someImage.jpg",但它没有办法返回,可能是因为它只使用字符串来查找文件并加载它。如果你需要你加载的文件的名字,你必须自己跟踪它。