【发布时间】:2020-11-10 14:32:00
【问题描述】:
我正在像这样设置图像源:
// get real thumbnail
obj.thumbnailSource = Xamarin.Forms.ImageSource.FromStream(() =>
new MemoryStream(Convert.FromBase64String(fullList[i].thumbnail)));
结果是应该有图片的空帧。
通过停止点,我设法发现在这个位置 fullList[i].thumbnail 给出了这个确切的字符串:
"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"
如果我现在将这个长字符串简单地添加到代码中,替换 fullList[i].thumbnail 部分,图像就可以很好地呈现(您也可以在 HTML 中尝试这个字符串)。它会给你(也给我)正确的照片。
同样,从包含该字符串的变量中设置它,不显示任何图片。
我正在监督的图像源有什么奇怪的地方吗?
(这是类型):
public class User
{
public string userEmail { get; set; }
public string userPassword { get; set; }
public string isFirstLogIn { get; set; }
public string fullName { get; set; }
public string thumbnail { get; set; }
public Xamarin.Forms.ImageSource thumbnailSource { get; set; }
}
编辑:这更奇怪:
什么是这样的:
byte[] res = Convert.FromBase64String(fullList[i].thumbnail);
// get real thumbnail
obj.thumbnailSource = ImageSource.FromStream(
() => new MemoryStream(res));
我只是将字符串转换为字节数组并将字节数组添加到流中。这行得通! 立即执行,不会渲染任何内容。
发生了什么事?
【问题讨论】:
-
如果其他一切都很好,那么我认为这只是一个简单的提升属性的案例,您需要使用
INotifyPropertyChanged导出您的User模型并提升thumbnailSource属性
标签: c# xamarin.forms