我将一个图像源绑定到一个字节数组,并使用转换器从字节数组创建图像。
这是我的Xaml
<DataTemplate x:Key="OfferImageTemplate">
<Grid Margin="0,0,0,6">
<Image Source="{Binding ImageByteArray, Converter={StaticResource BinaryImageConverter}}"/>
</Grid>
</DataTemplate>
这是转换器
public class BinaryImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value != null && value is byte[])
{
byte[] bytes = value as byte[];
BitmapImage btmimage = new BitmapImage();
using (MemoryStream memstream = new MemoryStream(bytes))
{
using (var a = memstream.AsRandomAccessStream())
{
a.Seek(0);
btmimage.SetSource(a);
}
}
return btmimage;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
问题在于,当执行btmimage.SetSource(a)
时,UI完全阻塞,之后没有任何反应。
没有例外。
你知道为什么会这样吗?
字节数组的内容是正确的,因为它们已在别处测试过。
这是一个Windows 8.1商店应用程序。