【问题标题】:Working with embedded images in a shared project在共享项目中处理嵌入图像
【发布时间】:2016-06-21 01:46:32
【问题描述】:

我想将嵌入图像添加到我的共享项目(无 PCL)。我将图像作为嵌入式资源添加到共享项目(不是特定于平台的)。如果我使用以下内容,我可以使用嵌入的图像:

ImageSource.FromResource("TestProject.Droid.Images.Document Folder.png")

只需使用字符串

项目名称空间.子文件夹.文件名.ext

不像docs 所描述的那样工作。必须添加平台命名空间(iOS、Droid、...)。

另一个可行的方法是编辑 .projiitems。我添加了 LogicalName

<ItemGroup>
    <EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Document Folder.png">
        <LogicalName>Document Folder.png</LogicalName>
    </EmbeddedResource>
</ItemGroup>

但这不是开箱即用的东西。没有Resource ID。我还尝试查看sample project,但根本没有启动。

如何在我的共享项目中使用嵌入图像?

【问题讨论】:

    标签: image xamarin xamarin.ios xamarin.forms


    【解决方案1】:

    official documentation 只处理 PCL 项目。对于共享项目,您必须使用完整字符串或添加 LogicalName

    完整字符串:

    从完整的字符串中加载资源

    ImageSource.FromResource("TestProject.Droid.Images.Document Folder.png")
    

    字符串是这样构建的

    <ProjectNamespace>.<PlatformNameSpace>.{<Subfolder>}.<Filename>.<Fileextension>
    

    &lt;Subfolder&gt; 仅在您有图像并且必须为每个子文件夹添加字符串时使用。因此,您只需要一种机制来获取每个平台的完整命名空间。也许您定义了一个属性,该属性根据平台返回不同的字符串(由您自己管理)。

    逻辑名称:

    编辑 .projiitems 并为每张图片添加LogicalName

    <ItemGroup>
        <EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Document Folder.png">
            <LogicalName>Document Folder.png</LogicalName>
        </EmbeddedResource>
    </ItemGroup>
    

    那么你就可以这样做了

    ImageSource.FromResource("Document Folder.png")
    

    已经提到可以直接在Visual Studio中添加Resource ID,这样就不需要自己添加LogicalName了,不过好像不是这样。 p>

    所以没有更简单的方法。 PCL 和共享项目的区别也解释了here(法语)。

    Working with files in Xamarin.Forms 文章还解释了一些重要细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多