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
相关产品推荐
相关产品推荐

