WP7图片从独立存储绑定

需求:一个ListBox上需要绑定图片,根据情况设置source,可能是isolatedStorage中的文件,也可能是xap中的文件。
代码如下:
首先是一个Converter的代码,里面有如何从isolatedStorage和xap中读取文件流。
 
public class StringToImageSource : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        try
        {
            BitmapImage ret = new BitmapImage();
            string filePath = (string)value;

            using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (iso.FileExists(filePath))
                { // 使用隔离存储中的文件
                    using (var source = iso.OpenFile(filePath, FileMode.Open, FileAccess.Read))
                    {
                        ret.SetSource(source);
                    }
                }
                else
                { // 使用资源文件(注意将BuildAction设置为Content)
                    Uri uri = new Uri(filePath, UriKind.RelativeOrAbsolute);
                    StreamResourceInfo sri = Application.GetResourceStream(uri);
                    ret.SetSource(sri.Stream);
                }

                return ret;
            }
        }
        catch (Exception)
        {
            return null; // 如果发生异常,让图片位置为空
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return DependencyProperty.UnsetValue;
    }

    #endregion
}

 

xaml绑定这样写:

Source="{Binding Img, Converter={StaticResource StringToImageSource}}”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值