Событие XAML для фонового изображения, отображаемого за пределами экрана

Я устанавливаю фоновое изображение в своей сетке XAML с помощью Uri. Uri указывает на URL-адрес HTTP, откуда он будет извлекаться, а затем отображать изображение в качестве фона для приложения метро Win8.

Я пытался выяснить, есть ли событие или что-то, к чему я могу подключиться, чтобы сообщить мне, что WPF загрузил его в память и закончил отображать его вне поля зрения.

В настоящее время маленькое изображение будет загружаться достаточно быстро и плавно исчезать. Однако, если я загружу более крупное и медленное изображение, потребуется 100 мс, чтобы оно появилось в качестве фона, что означает, что оно либо всплывает в середине затухания, либо после завершения эффекта затухания. Это выглядит совсем бедно.

Цель состоит в том, чтобы сделать плавный переход между страницами приложения (у меня это уже есть) без несоответствия фонового изображения, появляющегося всякий раз, когда это делается.

Любые предложения будут приветствоваться.


person Ty Norton    schedule 04.04.2012    source источник
comment
Это WPF или XAML/WinRT (он же Metro)? Не то же самое.   -  person jv42    schedule 06.04.2012


Ответы (2)


Вы не говорите, как именно вы загружаете изображение, но в BitmapImage есть событие DownloadCompleted, например.

BitmapImage bmp = new BitmapImage(imageUri); 
bmp.DownloadCompleted += ReadyToDisplay; 
person Phil    schedule 04.04.2012

Как сказал Фил, но для приложений Магазина Windows:

BitmapImage bmp = new BitmapImage(imageUri);
bmp.ImageOpened += ReadyToDisplay;

ImageOpened Имеет место, когда источник изображения загружается и декодируется без ошибок. Это событие можно использовать для определения размера изображения перед его визуализацией.

источник: MSDN

person ReinierDG    schedule 11.04.2013