将Byte []转换为silverlight中的图像

时间:2014-03-27 08:43:57

标签: image silverlight bytearray

我有一个Silver Light应用程序需要在Datagrid中绑定图像,我的图像为byte[]。我在observablecollection<User>中有大约500多个数据如何将我的数据转换为图像,在asp.net中我们可以使用datarowbinding事件但在silverlight中我们怎么做呢

1 个答案:

答案 0 :(得分:1)

在传统的asp.net中,我们有类似的事件,我们可以管理行绑定,在silverlight中你可以使用ivalueconvertor。 将图像与图像属性数据绑定,然后定义转换器以将byte []转换为图像

<UserControl.Resources>
     <Myerp:ConvertByteArrayToImge x:Key="ConvertByteArrayToImge"></Myerp:ConvertByteArrayToImge>
</UserControl.Resources>

在你的图片中

<Image x:Name="UploadedIcon" Grid.Column="0" Height="16" Width="16" HorizontalAlignment="Left" VerticalAlignment="Center" Source="{Binding Icon,Converter={StaticResource ConvertByteArrayToImge}}" />

转换器类

public class ConvertByteArrayToImge : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is byte[])
            {
                MemoryStream memStream = new MemoryStream((Byte[])value);
                memStream.Seek(0, SeekOrigin.Begin);
                BitmapImage empImage = new BitmapImage();
                if (memStream.Length > 0)
                    empImage.SetSource(memStream);
                return empImage;
            }
            else
                return null;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }