2016-03-07 54 views
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,但那根本沒有啓動。

如何在共享項目中使用嵌入式圖像?

回答

0

official documentation只處理PCL項目。對於共享項目,您必須使用完整字符串或添加LogicalName

完全字符串:

負荷滿弦的資源

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") 

前面已經講過,你可以添加資源ID直接在Visual Studio中,這樣你就不需要自己添加LogicalName,但這似乎並非如此。

所以沒有簡單的方法。 PCL和共享項目之間的差異也被解釋爲here(法語)。

另外Working with files in Xamarin.Forms文章解釋了一些重要細節。