轮播强制更新缓存图像

时间:2018-02-06 15:37:24

标签: c# uwp carousel

我使用C#UWP Carousel来显示图像集合。图像是3d观察者视点的缩略图。当我单击保存视点时,它会第一次更新该位置的图像。但是,当我单击连续保存时,它不会更新控件中的图像。图像的路径没有改变,但图像的内容有。我已手动验证图像文件确实正在更新。只是旋转木马上的图像不是。如何强制Carousel Control更新所有图像或清除其缓存强制更新?

我尝试将ItemSource设置为null并重置它。但这不起作用。必须有一种方法来告诉控件刷新图形。 UpdateLayout不起作用,当我触发CollectionChanged事件时,它也不起作用。

      mCarouselControl.ItemsSource = null;
        mCarouselControl.Items.Clear();

更新缩略图图像 然后

mCarouselControl.ItemsSource = mCaroselItems;

这就是你如何解决问题 在为缩略图加载的位图中,您必须将位图创建选项设置为IgnoreImageCache。

    public async Task<BitmapImage> LoadThumbnailFromFile(string filepath)
    {
        var bi = new BitmapImage();

        StorageFile file = await StorageFile.GetFileFromPathAsync(filepath);
        const uint requestedSize = 400;
        const ThumbnailMode thumbnailMode = ThumbnailMode.PicturesView;
        const ThumbnailOptions thumbnailOptions = ThumbnailOptions.ResizeThumbnail;

        StorageItemThumbnail thumbnail = await file.GetThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions);

        bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
        bi.DecodePixelHeight = 200;
        bi.DecodePixelWidth = 200;
        bi.SetSource(thumbnail);
        return bi;
    }

0 个答案:

没有答案