![](/img/trans.png)
[英]Change Xamarin Forms version for each platform - iOS, Android & Shared
[英]Xamarin forms shared project with images for Android and iOS
我正在嘗試在解決方案中的“共享”項目中上載圖像,以便Android和iOS項目可以通過Xaml正常使用它。 不工作,不知道為什么。 誰能解釋為什么它不起作用?
延期:
[ContentProperty("Source")]
public class ImageResourceExtension : IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Source == null)
{
return null;
}
// Do your translation lookup here, using whatever method you require
var imageSource = ImageSource.FromResource(Source);
return imageSource;
}
}
Xaml:
<Image Source="{extensions:ImageResource MyProject.Assets.fechar.png}" HorizontalOptions="Start" HeightRequest="16" Focused="Image_Focused" BackgroundColor="Red" WidthRequest="15" />
在擴展中放置一個斷點,對於我列表中的每個項目,它通常會在此停一次。
我也嘗試過僅在代碼后面插入硬編碼綁定以進行測試,並且使用ImageSource.FromResource也無法正常工作。
圖像文件如文檔所示為EmbbedResource。
FromResource是指Android或iOS項目,而不是共享項目。 映像必須位於平台特定項目的相應文件夾中。
不要使用擴展名。 有更簡單的方法。
根據Xamarin的說法:“當前沒有針對資源標識符的隱式轉換,您必須使用ImageSource.FromResource”和“由於沒有從字符串到ResourceImageSource的內置類型轉換器,因此Xaml無法本地加載這些類型的圖像”。 因此,您不能在xaml中指定共享圖像,但可以使用后面的代碼綁定共享圖像。
在xaml中:
<Image Source="{Binding Image}" HorizontalOptions="Start" WidthRequest="80"/>
然后在后面的代碼中
public ImageSource Image
{
get
{
return ImageSource.FromResource("ButtonRendererDemo.Resources.icon1.png"); //from PCL
}
}
以下是項目結構
///////////////////////////////////////////////////// ////////////////
經過共享項目測試。 下面是結構
關鍵是將共享項目的引用添加到調用FromResource的PCL中。 共享項目被注入PCL,然后在我的項目結構中
public ImageSource Image
{
get
{
//return ImageSource.FromResource("ButtonRendererDemo.Resources.icon1.png"); //from PCL
return ImageSource.FromResource("ButtonRendererDemo.Pictures.icon1.png"); //from Shared
}
}
///////////////////////////////////////////////////// ////////////
如果沒有任何效果,請使用以下代碼查找資源。 在調用FromResource的文件中,使用System.Reflection添加; 然后添加以下代碼
var assembly = typeof(App).GetTypeInfo().Assembly;
foreach (var res in assembly.GetManifestResourceNames())
{
System.Diagnostics.Debug.WriteLine("found resource: " + res);
}
您應該在“輸出”窗口中看到類似
找到的資源:someNamespace.Pictures.icon1.png-這是您需要使用的資源。
您沒有回答我有關項目結構的問題。 那我可以給你一個確切的答案。 我懷疑您的圖像路徑為“ MyProject.Droid.Assets.fechar.png”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.