System.NotSupportedException при инициализации BitmapImage - PullRequest
0 голосов
/ 17 февраля 2019

Я получаю массив сообщений с вложениями из API и создаю на их основе Models для UserControls.В модели я вызываю Initial метод для загрузки изображения в локальное хранилище. Но если я открываю диалог (получаю массив из API), как только я запускаю приложение, я получаю сообщение об ошибке System.NotSupportedException in PresentationCore.dll Additional Information: No pixel format information found.

Вот код модели:

Самое интересное, что я поймал его, но все равно получаю

public class MediaMessageAttachment : ViewModelBase
    {
        public string FullImageURI { get; set; }
        public string VideoURI { get; set; }
        public string Title { get; set; }
        public bool HasVideo => VideoURI != null;
        public bool HasImage => FullImageURI != null;
        public string Duration { get; set; }
        public bool IsLoading
        {
            get { return isLoading; }
            set
            {
                isLoading = value;
                RaisePropertyChanged("IsLoading");
            }
        }

        private BitmapImage image;
        private string previewImageURI;
        private bool isLoading;

        public string PreviewImageURI { get { return previewImageURI; } set { previewImageURI = value; RaisePropertyChanged("PreviewImageURI"); Initial(); } }

        public BitmapImage Image
        {
            get { return image; }
            set
            {
                image = value;
                RaisePropertyChanged("Image");
            }
        }

        public RelayCommand OpenImageCommand
        {
            get;
            private set;
        }

        public MediaMessageAttachment()
        {
            OpenImageCommand = new RelayCommand(() => OpenImage());
        }

        private void OpenImage()
        {
            if (HasImage)
                PopupVM.ShowPopup(FullImageURI);
            else if (HasVideo)
                PopupVM.ShowPopup(VideoURI);
        }
        public async Task Initial()
        {
            IsLoading = true;
            if (!Directory.Exists(Environment.CurrentDirectory + "\\temp"))
            {
                Directory.CreateDirectory(Environment.CurrentDirectory + "\\temp");
            }
            using (WebClient client = new WebClient())
            {
                var path = Environment.CurrentDirectory + "\\temp\\" + PreviewImageURI.Substring(PreviewImageURI.LastIndexOf('/') + 1);
                if (File.Exists(path))
                    DownloadFileCompleted(null, null);
                else
                {
                    client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
                    await client.DownloadFileTaskAsync(new Uri(PreviewImageURI), path);
                }
            }
        }

        private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            try
            {
                var path = Environment.CurrentDirectory + "\\temp\\" + PreviewImageURI.Substring(PreviewImageURI.LastIndexOf('/') + 1);
                Image = new BitmapImage();
                Image.BeginInit();
                Image.UriSource = new Uri(path);
                Image.CacheOption = BitmapCacheOption.OnLoad;
                Image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
                Image.EndInit();
                Image.Freeze();
                IsLoading = false;
            }
            catch (System.NotSupportedException)
            {
                Initial();
            }
        }
    }
...