在UWP

时间:2017-04-30 01:27:21

标签: c# data-binding uwp

C#/通用Windows平台

我有一个对象,其中包含一个包含图像作为base64编码字符串的属性。如何将此字符串绑定到前端的图像?目前我可以异步将base64字符串转换为BitmapImage,但不能将生成的图像绑定到前端,因为属性不能包含异步函数。我将如何做到这一点,因为到目前为止我找到的所有解决方案都不适用于UWP。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

第一种是将base64转换为位数组。

您可以使用Convert.FromBase64String将base64转换为byte []

var bytes = Convert.FromBase64String(base64);

但是byte []不能是你应该将byte []转换为缓冲区

的流
 var buf=bytes.AsBuffer();

您可以将其更改为流式传输。

 var stream=buf.AsStream();

您可以将该流用于新的BitmapDecoder

var image = stream.AsRandomAccessStream();

var decoder = await BitmapDecoder.CreateAsync(image);
image.Seek(0);

您可以使用将其转换为ImageSource的WriteableBitmap。

var output = new WriteableBitmap((int)decoder.PixelHeight, (int)decoder.PixelWidth);
await output.SetSourceAsync(image);
return output;

然后,您可以将图像源设置为您想要显示的内容。

请参阅convert bitmap WriteableBitmapconvert base64ToImage

如果要将imagesource绑定到Image.Source,则应添加具有属性的类。

    public ImageSource Source
    {
        get { return _source; }
        set { _source = value; OnPropertyChanged();}
    }

OnPropertyChanged是INotifyPropertyChanged,您可以在github

中使用它

您可以使用convert base64来映像源并设置Source。

您可以将其绑定到页面,并查看图像显示base64。