我创建了 Xamarin Native App,仅使用 .net 标准类库创建 UI 部分平台特定和共享代码(模型、视图模型)
对于这种情况,您可以参考这个document 使ImageResourceExtension 从.net 标准类库中加载Embedded 图像。
我们需要将以下代码添加到.net 标准类库。
[Preserve(AllMembers = true)]
[ContentProperty(nameof(Source))]
public class ImageExtension : 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, typeof(ImageExtension).GetTypeInfo().Assembly);
return imageSource;
}
}
然后将图像文件添加到 .net 标准类库并将 Build Action 编辑为 Embedded
用法
ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mySource="clr-namespace:ImageLib;assembly=ImageLib"
x:Class="WorkingWithImages.EmbeddedImagesXaml">
<StackLayout Margin="20,35,20,20">
<Image Source="{mySource:Image ImageLib.logo.jpg}" />
</StackLayout>
/ContentPage>
请注意:图片路径为classlibname.imagename.jpg
更新
你可以使用 uwp uri scheme 来添加图片路径到图片控件,例如
<ImageBrush ImageSource="ms-appx:///Image/AppLogoicon.png" Stretch="UniformToFill" x:Name="Image" />