You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms中byte[]转Image后UI显示空白,求解决方法

解决Xamarin.Forms中byte[]转ImageSource显示空白的问题

问题根源

你的代码存在关键错误:对已有的图片字节数组byteArray调用Encoding.ASCII.GetBytes()进行二次编码,这会彻底破坏原始图片的二进制数据,导致Image控件无法解析出有效图片,最终显示空白。

修正后的ViewModel代码

直接使用原始的byteArray创建MemoryStream即可,无需额外编码转换:

// 假设byteArray是你的原始图片字节数组
Image = ImageSource.FromStream(() => new MemoryStream(byteArray));

额外注意事项

  • 确保ViewModel实现INotifyPropertyChanged接口,且Image属性赋值时触发PropertyChanged事件,否则UI无法响应属性更新:
private ImageSource _image;
public ImageSource Image
{
    get => _image;
    set
    {
        _image = value;
        OnPropertyChanged(nameof(Image));
    }
}

// 实现INotifyPropertyChanged的必要方法
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
  • 确认byteArray本身是有效的图片二进制数据(如从文件、网络或数据库正确获取的JPG/PNG等格式字节),若原始数据损坏,也会导致显示空白。

内容的提问来源于stack exchange,提问作者Dev Xam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:01:06