BitmapImage игнорирует StreamSource

136
05 декабря 2019, 08:00

Я не совсем понимаю, почему когда устанавливаю StreamSource для BitmapImage, он всегда будет null.

Сделал небольшой конвертер Uri изображений с локальным кэшированием, с использованием IsolatedStorageFile. При запросе изображения идет перенаправление запроса к локалбному хранилищу, и при отсутствии кэша, грузится из сети, при этом после загрузки сразу же кэшируется.

Но как только я пытаюсь установить StreamSource для BitmapImage, он просто при возврате BitmapImage будет всегда null, да и само изображение не загружено.

string fullPath = BasePath + "\\" + filePath + ".cache";
if (!Iso.FileExists(fullPath))
{
    return null;
}
BitmapImage result = new BitmapImage
{
    StreamSource = Iso.OpenFile(fullPath, FileMode.Open, FileAccess.Read)
};
return result;

Возможно ли это исправить?

Answer 1

Обратите внимание, класс BitmapImage реализует интерфейс ISupportInitialize. Это значит, что он поддерживает "пакетную инициализацию", т. е. вы должны вызвать у объекта BeginInit, затем установить нужные свойства (UriSource или StreamSource и другие параметры) и вызвать EndInit. Все установки свойств до BeginInit и после EndInit игнорируются. Другой способ инициализации — вызов параметризированного конструктора, но в наличии есть только конструктор с Uri.

READ ALSO
Как сделать таймер отсчета?

Как сделать таймер отсчета?

Нажимается кнопка в игре, происходит действие и начинается отсчет (допустим 10 секунд), bool становится falseПосле прохождения таймера в 10с, значение...

170
Отмена изменений объекта MVVM WPF EF6

Отмена изменений объекта MVVM WPF EF6

У меня есть проект для моего колледжаВ нем я пытаюсь реализовать MVVM + WPF + EF6

125
Данные из базы данных в txt файл

Данные из базы данных в txt файл

Всем привет! Есть веб приложение с базой студентов (id, Имя, возраст, сумма баллов) Хочу сделать выборку из базы 5 студентов с самыми высокими...

151
Локализация через ResX Resource Manager

Локализация через ResX Resource Manager

В ResX Resource Manager создал переводы всех строк (Neutral,en,ru,ru-RU)Git показал, что файлы добавились

121