图像打开后如何通知PropertyChanged?

时间:2011-12-09 18:02:35

标签: c# windows-phone-7

我的画廊遇到了一些问题。首先,我下载所有缩略图以获得概述。但是当我点击图片时,首先我要显示缩略图并加载大图。完成后,我想将ImageSource更改为新图片。这是我的例子:

    private BitmapImage picture;   
    public BitmapImage Picture
    {
        get
        {
            if (picture == null)
            {
                RequestBigpicture();
                return Thumbnail;
            }
            return picture;
        }
    }   

    public void RequestBigpicture()          
    {
        picture = new BitmapImage(new Uri("http://www.fun-hollywood.de/" + bigPicture, UriKind.Absolute));
        picture.ImageOpened += pictureImage_ImageOpened;
    }

    void pictureImage_ImageOpened(object sender, System.Windows.RoutedEventArgs e)
    {
        NotifyPropertyChanged("Picture");
    }

这不起作用,在RequestBitPicture中这部分(因为我在某处阅读)并不是更好:

        picture = new BitmapImage(new Uri("http://www.fun-hollywood.de/" + bigPicture, UriKind.Absolute));
        var pictureImage = new Image();
        pictureImage.Source = picture;
        pictureImage.ImageOpened += pictureImage_ImageOpened;

永远不会调用ImageOpened。怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我认为您应该将BitmapImage.CreateOptions属性设置为NoneBackgroundCreation以立即触发图像下载。
因为默认值为DelayCreation,这就是为什么您的图片不会被挂载而且ImageOpened事件永远不会被触发的原因。