在代码中设置图像源并指向PCL项目中特定文件夹中的嵌入式图像(在本例中为“图像”)时,我会这样做:
backgroundImg.Source = ImageSource.FromResource("Myapp.Images." + imageName + ".jpg");
在XAML中有没有办法做到这一点?
答案 0 :(得分:3)
@Code Pope的回答是正确的,但您还需要添加一个“ ImageResourceExtension”,如@Gerald Versluis的评论中所述。
要这样做,只需像这样创建一个新文件(类)“ ImageResourceExtension.cs”:
using System;
using System.Reflection;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace ImageResourceExtension
{
[ContentProperty (nameof(Source))]
class ImageResourceExtension : IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Source == null)
{
return null;
}
var imageSource = ImageSource.FromResource(Source, typeof(ImageResourceExtension).GetTypeInfo().Assembly);
return imageSource;
}
}
}
然后将xmlns:local="clr-namespace:ImageResourceExtension"
添加到您的xaml文件中,如下所示:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ImageResourceExtension"
...
现在,您可以使用xaml代码访问嵌入式资源,如下所示:
<Image Source="{local:ImageResource MyProject.Resources.Images.Logo.png}" />
答案 1 :(得分:0)
答案 2 :(得分:-1)
您可以像<Image Source="imageName" Aspect="AspectFit" />
这样从xaml设置图像
确保您的图片在iOS资源和Android资源-> drawable