首页 文章

在共享项目中使用嵌入式图像

提问于
浏览
0

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

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

只需使用字符串

ProjectNamespace.Subfolder.Filename.ext

不起作用docs描述 . 一个人必须添加平台命名空间(iOS,Droid,...) .

另一个可行的选项是编辑 .projitems . 我添加了 LogicalName

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

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

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

1 回答

  • 0

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

    Full string:

    从完整字符串加载资源

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

    字符串是这样构建的

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

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

    LogicalName:

    编辑.projitems并为每个图像添加 LogicalName

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

    然后你就可以做到这一点

    ImageSource.FromResource("Document Folder.png")
    

    有人提到您可以直接在Visual Studio中添加资源ID,这样您就不需要自己添加 LogicalName ,但这似乎不是真的 .

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

    此外,Working with files in Xamarin.Forms文章解释了一些重要细节 .

相关问题