在转换器块执行中创建BitmapImage

时间:2015-04-02 12:07:39

标签: c# winrt-xaml windows-8.1 ivalueconverter

我将一个图像源绑定到一个字节数组,并使用转换器从字节数组创建图像。

这是我的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商店应用程序。

0 个答案:

没有答案