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