Beispiel #1
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (targetType != typeof(ImageSource))
            {
                throw new InvalidOperationException("CachedImageUrlValueConverter can only be used on ImageSource properties.");
            }

            if (value == null)
            {
                return(value);
            }

            if (!(value is CachedImage))
            {
                return(null);
            }
            CachedImage cachedImage = (CachedImage)value;

            if (cachedImage.Access != null)
            {
                cachedImage.Access();
            }
            string url = cachedImage.ImageUrl;

            if (url == null)
            {
                return(null);
            }
            if (!url.StartsWith("storage:"))
            {
                return(new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute)));
            }

            url = url.Substring("storage:".Length);
            using (IsolatedStorageFileStream isoStream = _isoStore.OpenFile(url, FileMode.Open))
            {
                BitmapImage bmp = new BitmapImage();
                bmp.SetSource(isoStream);
                return(bmp);
            }
        }