如何在代码背后绑定嵌入式图像

劳夫

我需要将图像绑定到<Image>Xamarin中控件。

我使用了此处找到的代码,可以通过在XAML标记中对图像名称进行硬编码来做到这一点。

但是我该如何在后面的代码中执行此操作,因为图像名称来自SQLite数据库,图像位于Images.MyPages文件夹中。

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:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="SApp.Views.SPages"
             xmlns:local="clr-namespace:SApp.MarkupExtensions">
    <ContentPage.Content>
        <StackLayout>
            <Image Source="{local:QEmbeddedImage ResourceId=SApp.Images.SPages.page0.jpg}" x:Name="pageImage" Aspect="AspectFill"></Image>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

using SApp.MarkupExtensions;

namespace SApp.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class SPages : ContentPage
    {
        public SPages()
        {
            InitializeComponent();

        }
    }
}

EmbeddedImage 实施:

using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace SApp.MarkupExtensions
{
    [ContentProperty("ResourceId")]
    public class QEmbeddedImage : IMarkupExtension
    {
        public string ResourceId { get; set; }
        public object ProvideValue(IServiceProvider serviceProvider)
        {
            if (string.IsNullOrWhiteSpace(ResourceId))
                return null;
            return ImageSource.FromResource(ResourceId);
        }
    }
}
Cherry Bu-MSFT

但是我该如何在后面的代码中执行此操作,因为图像名称来自SQLite数据库,图像位于Images.MyPages文件夹中。

根据您的描述,您想要通过代码在后面显示图像,该图像存储在文件夹中,以嵌入式资源的形式构建动作,对吗?

如果是,则可以查看以下代码:

  <Image
            x:Name="image1"
            HeightRequest="200"
            WidthRequest="200" />

通过以下代码显示图像:

   public Page1()
    {
        InitializeComponent();
        image1.Source = ImageSource.FromResource("FormsSample.images.image2.png", typeof(Page1).GetTypeInfo().Assembly);
    }

这是我的项目屏幕截图:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章