对于Xamarin表单,当ImageSource是内存流时,如何设置显示图像的大小?

对于Xamarin表单,当ImageSource是内存流时,如何设置显示图像的大小?,image,xamarin.forms,display,Image,Xamarin.forms,Display,我有一个带有视图单元格列表的表单。一些单元格显示图像。有些则不然。我正在尝试将图像的ImageSource设置为OnAppearing。如果我这样做,图像,对于有它们的细胞,将显示,但将无法正确大小。如果两个连续的单元具有图像,则第二个单元的图像将覆盖第一个单元的图像。在其他情况下,将显示单元格的图像,但以下单元格显示在先前单元格图像的顶部 基本上,图像正在显示,但高度/宽度属性设置不正确或根本不正确,这会导致上一个和/或后续单元格出现显示问题。这也会导致一个不正确的区域,可以点击它来做一些事情

我有一个带有视图单元格列表的表单。一些单元格显示图像。有些则不然。我正在尝试将图像的ImageSource设置为OnAppearing。如果我这样做,图像,对于有它们的细胞,将显示,但将无法正确大小。如果两个连续的单元具有图像,则第二个单元的图像将覆盖第一个单元的图像。在其他情况下,将显示单元格的图像,但以下单元格显示在先前单元格图像的顶部

基本上,图像正在显示,但高度/宽度属性设置不正确或根本不正确,这会导致上一个和/或后续单元格出现显示问题。这也会导致一个不正确的区域,可以点击它来做一些事情。有办法解决这个问题吗?这是我的密码:

using Application.ViewModels.ItemViewModels;
using System.IO;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace Application.Views.ViewCells
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class ItemDetailViewCell : ViewCell
    {
        public MessageDetailViewCell()
        {
            InitializeComponent();
        }

        // Displays image properly, but height/width is incorrect, resulting in display issues with neighboring cells.
        // Also affects surface area of cell for user tap.
        // imageData is of type byte[]
        protected override void OnAppearing()
        {
            base.OnAppearing();

            var imageData = ((ItemDetailViewModel)BindingContext).ImageData;
            if (imageData != null && imageData.Length > 0)
            {
                var memoryStream = new MemoryStream(imageData);
                image.Source = ImageSource.FromStream(() =>
                {
                    var stream = memoryStream;
                    return stream;
                });
            }
            else
            {
                image.Source = null;
            }
        }
    }
}

作为替代方法,我尝试使用ImageSource到ImageData的Xaml绑定,使用转换器从字节数组中创建MemoryStream。这也不起作用。你是说用xaml设置图像大小不起作用吗?你能显示一个屏幕截图吗?这样可以更直观地发现问题。这是我发现唯一能持续起作用的东西。我不明白为什么我需要设置图像大小。它应该从图像本身检索大小。在Xamarin表单中是否有这样做的方法?尝试设置图像的水平选项、垂直选项和纵横比AXML我发现的一件事是,如果图像大于显示区域,则根据高度/宽度比,最终可能会有额外的空间,看起来像边距或填充。我解决了我的问题,1)缩小了图像的大小,我真正想要的是缩略图类型的显示,2)设置了适当的图像高度/宽度。