CodeGo.net>如何绑定位于隔离存储中的图像

我需要绑定位于隔离存储中的图像-
我在这里找到一个答案,看来我的处境
Binding image in Isolated Storage

但是后来这个人切换到了另一个解决方案,并使用ClientBin进行图像存储.我的照片一直都不同.
现在,我使用来自服务器的图像,但需要将其保存到隔离存储中并绑定到listBox.
XAML中的代码:

图片宽度=“ 110” CacheMode =“ BitmapCache”源=“ {Binding ThumbURL}”

后面的代码:

public string ThumbURL
    {
        get
        {
            return String.Format("http://localhost:3041/Pictures/thumbs/{0}.jpg", _ID);
        }
        set
        {
            this.OnThumbURLChanging(value);
            this._ThumbURL = value;
            this.OnThumbURLChanged();
            this.OnPropertyChanged("ThumbURL");
        }
    }

谁能建议我该怎么做?我会非常非常感激.

请发布一些代码示例.

解决方法:

要从网上下载图片,请参阅前面的SO问题-how-can-i-download-and-save-images-from-the-web.

在独立存储中绑定图像的区别在于,必须绑定到从绑定代码对象初始化的BitmapImage对象.我已将您的媒体资源从“ ThumbURL”重命名为“ ThumbImage”,以显示差异.

因此在XAML中:

Image Width="110" CacheMode="BitmapCache" Source="{Binding ThumbImage}"

在您的绑定对象中-假设此图片不变-如果确实如此,则必须适当地引发属性更改事件. (已编辑代码以处理类序列化问题).

private string _thumbFileName;
public string ThumbFileName
{
    get
    {
        return _thumbFileName;
    }
    set
    {
        _thumbFileName = value;
        OnNotifyChanged("ThumbFileName");
        OnNotifyChanged("ThumbImage");
    }
}

[IgnoreDataMember]
public BitmapImage ThumbImage 
{ 
    get 
    { 
        BitmapImage image = new BitmapImage();                    
        IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
        string isoFilename = ThumbFileName;
        var stream = isoStore.OpenFile(isoFilename, System.IO.FileMode.Open);
        image.SetSource(stream);
        return image;
    }     
}

public event PropertyChangedEventHandler PropertyChanged;

private void OnNotifyChanged(string propertyChanged)
{
    var eventHander = PropertyChanged;
    if (eventHander != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyChanged));
    }
}

(编辑后添加了如何首先下载图像的链接)

上一篇:WEB前端基础之SCC(字体颜色背景-盒子模型)


下一篇:C#-ContextMenuOpening事件未触发