我想将嵌入的图像添加到我的共享项目(没有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 回答
official documentation仅处理PCL项目 . 对于共享项目,您必须使用完整字符串或添加
LogicalName
.Full string:
从完整字符串加载资源
字符串是这样构建的
<Subfolder>
仅在您拥有图像时使用,并且每个子文件夹都必须添加字符串 . 因此,您只需要一种机制来获取每个平台的完整命名空间 . 也许你定义一个属性,它根据平台返回一个不同的字符串(由你自己管理) .LogicalName:
编辑.projitems并为每个图像添加
LogicalName
:然后你就可以做到这一点
有人提到您可以直接在Visual Studio中添加资源ID,这样您就不需要自己添加
LogicalName
,但这似乎不是真的 .所以没有更简单的方法 . PCL和共享项目之间的区别也解释了here(法文) .
此外,Working with files in Xamarin.Forms文章解释了一些重要细节 .