我需要找到将图像保存到IsolatedStorage的方法并向他们展示Silverlight(XAML) 重要:Silverlight必须拍摄“自己”的图像,我无法从后面的代码中设置图像 我之前尝试了很多解决方案。 最后一个解决方案是绑定字节数组并将它们转换为Image XAML
StackPanel Orientation="Horizontal" Margin="0,0,0,20">
<Image Width="110" CacheMode="BitmapCache" Source="{Binding ThumbLocal,Converter={StaticResource imgConverter}}"
Margin="12,0,9,0"/>
<StackPanel Width="311">
背后的代码
public byte[] ThumbLocal
{
get;
set;
}
public class ByteImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
MemoryStream memStream = new MemoryStream((byte[])value);
memStream.Seek(0, SeekOrigin.Begin);
BitmapImage thumbLocal = new BitmapImage();
thumbLocal.SetSource(memStream);
return thumbLocal;
}
}
一切正常,直到我将byte[]
保存到数据库并尝试检索。
到现在为止,我可以看到将图像作为文件保存到IsolatedStorage的唯一选项,然后检索并转换为byte[]
。
这是“智能”解决方案吗?
答案 0 :(得分:1)
首先,创建此转换器:
public class BinaryToImageSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null && value is byte[])
{
var bytes = value as byte[];
var stream = new MemoryStream(bytes);
var image = new BitmapImage();
image.SetSource(stream);
stream.Close();
return image;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
其次,使用此转换器绑定到您的byte [],即如果您使用的是MVVM: 视图:
<Image Source="{Binding IsolatedStorageImage, Converter={StaticResource BinaryToImageSourceConverter}}" x:Name="ScanImage"/>
您可以在contrlol(prop snippet)类型byte []中创建属性,并从isostorage读取图像到字节数组,然后将属性值设置为它。 如果您有更多问题,请随时问我。