定义资源文件夹 Images:
导入一个图片,设置图片项目属性(属性-生成-生成操作-EmbeddedResource):
资源ID可以直接在页面的标记扩展中传入。
自定义标记扩展(ImageSourceExtension.cs):
using System;
using System.Reflection;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace EmbeddedImagesSample
{
[ContentProperty(nameof(Source))]
public class ImageSourceExtension:IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Source == null)
{
return null;
}
var imageSource = ImageSource.FromResource(Source,typeof(ImageSourceExtension).GetTypeInfo().Assembly);
return imageSource;
}
}
}
声明命名空间引用: xmlns:local="clr-namespace:EmbeddedImagesSample
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:EmbeddedImagesSample"
x:Class="EmbeddedImagesSample.MainPage">
<StackLayout>
<Image Source="{local:ImageSource EmbeddedImagesSample.Images.simple.jpeg}"/>
</StackLayout>
</ContentPage>
channel9: Using Embedded Images