来自IsolatedStorage的Windows Phone 7 Silverlight绑定映像



我需要找到将图像保存到IsolatedStorage并在Silverlight (XAML)中显示它们的方法重要提示:Silverlight必须"自己"拍摄图像,我不能从后面的代码设置图像我以前尝试过很多解决方案。最后一个解决方案是绑定字节数组并将它们转换为图像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[]。这是"聪明"的解决方案吗?

首先,创建这个转换器:

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();
    }
}

第二,绑定到你的字节[]使用这个转换器,即,如果你使用MVVM:观点:

<Image Source="{Binding IsolatedStorageImage, Converter={StaticResource BinaryToImageSourceConverter}}" x:Name="ScanImage"/>

你可以在控件(道具片段)中设置属性类型byte[],并从isostorage中读取图像到字节数组,然后将属性值设置为它。如果你还有问题,尽管问我。

最新更新