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