Xamarin Forms 使用 XAML 显示来自嵌入式资源的图像

dan*_*ord 5 xamarin xamarin.forms

我试图在共享项目资源,以显示和嵌入式图像(如解释在这里微软的文档)。

我创建了 ImageResourceExtension,项目编译,但是当我启动项目时出现以下错误:

无法从程序集“Xamarin.Forms.Core,版本 = 2.0.0.0”加载类型“Xamarin.Forms.Xaml.IReferenceProvider”

这是我的代码:

主页.xaml

<?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:App1"
             x:Class="App1.MainPage">

    <StackLayout>

        <Image x:Name="imgTest" Source="{local:ImageResource img.jpg}" />

    </StackLayout>

</ContentPage>
Run Code Online (Sandbox Code Playgroud)

嵌入式图像文件

namespace App1
{
    [ContentProperty(nameof(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, typeof(ImageResourceExtension).GetTypeInfo().Assembly);

            return imageSource;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Nit*_*pra 5

你可以试试这个,它对我有用

xyz.xaml.cs

imgName.Source = ImageSource.FromResource("ProjectName.Images.backicon.png");
Run Code Online (Sandbox Code Playgroud)

xyz.xaml

<Image x:Name="imgName" />
Run Code Online (Sandbox Code Playgroud)

希望这段代码对你有帮助!!

  • 2021 年仍然有效。感谢你 (2认同)

Bru*_*iro -1

如果将图像添加到 Android 可绘制文件夹或 iOS 资源文件夹中,则不需要任何扩展名。您可以简单地执行以下操作:

 <Image x:Name="imgTest" Source="img.jpg" />
Run Code Online (Sandbox Code Playgroud)