Image.ImageFailed Событие

Определение

Возникает при возникновении ошибки, связанной с получением или форматированием изображения.

public:
 virtual event ExceptionRoutedEventHandler ^ ImageFailed;
// Register
event_token ImageFailed(ExceptionRoutedEventHandler const& handler) const;

// Revoke with event_token
void ImageFailed(event_token const* cookie) const;

// Revoke with event_revoker
Image::ImageFailed_revoker ImageFailed(auto_revoke_t, ExceptionRoutedEventHandler const& handler) const;
public event ExceptionRoutedEventHandler ImageFailed;
function onImageFailed(eventArgs) { /* Your code */ }
image.addEventListener("imagefailed", onImageFailed);
image.removeEventListener("imagefailed", onImageFailed);
- or -
image.onimagefailed = onImageFailed;
Public Custom Event ImageFailed As ExceptionRoutedEventHandler 
<Image ImageFailed="eventhandler"/>

Тип события

Комментарии

Ниже приведены условия, в которых может произойти это событие.

  • Файл не найден
  • Недопустимый (нераспознанный или неподдерживаемый) формат файла
  • Ошибка декодирования неизвестного формата файла после отправки
  • Перезагрузка квалифицированного ресурса системой. Вы можете использовать ErrorMessage в данных события, чтобы определить характер сбоя.

ImageFailed и ImageOpened являются взаимоисключающими. Одно или другое событие всегда срабатывает, когда для изображениязадано или сброшено исходное значение.

Одним из сценариев обработки ImageFailed является установка UriSource базового источника BitmapImage в другой локальный файл изображения. Это может служить резервным значением для отображения вместо пустого пространства. Например, если вы пытаетесь отобразить внешнее изображение там, где возможно, что источника больше нет, или если у пользователя нет подключения к Интернету, вы можете задать для UriSource ссылку на локальное резервное изображение или образ заполнителя, который является частью пакета приложения и всегда будет гарантированно доступен.

Если элемент Image отсутствует в динамическом визуальном дереве, элемент Image не запускает события ImageOpened или ImageFailed. Если вам нужно получить эти события, пока элемент не в динамическом дереве, используйте BitmapImage. ImageOpened/События ImageFailed .

private void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e) {
    Image img = sender as Image;
    BitmapImage fallbackImage = new BitmapImage(new Uri("ms-appx:///Images/fallback.png"));
    img.Width = 100; //set to known width of this source's natural size
     //might instead want image to stretch to fill, depends on scenario
    img.Source = fallbackImage;
}

Работа в Windows 8

В Windows 8 ресурсы могут использовать шаблон квалификатора ресурсов для загрузки различных ресурсов в зависимости от масштабирования для конкретного устройства. Однако ресурсы не загружаются автоматически, если коэффициент масштабирования изменяется во время работы приложения. В этом случае приложениям придется перезагрузить ресурсы, обрабатывая событие DpiChanged (или нерекомендуемое событие LogicalDpiChanged ) и используя API ResourceManager , чтобы вручную перезагрузить ресурс, соответствующий новому коэффициенту масштабирования. Начиная с Windows 8.1, любой ресурс, который был первоначально получен для вашего приложения, автоматически повторно оценивается при изменении коэффициента масштабирования во время работы приложения. Кроме того, если этот ресурс является источником образа для объекта Image , то одно из событий загрузки источника (ImageOpened или ImageFailed) запускается в результате действия системы по запросу нового ресурса и последующему применению его к image. Сценарий, в котором может произойти изменение масштаба во время выполнения, заключается в том, что пользователь перемещает приложение на другой монитор, когда доступно несколько мониторов.

Если вы переносите код приложения из Windows 8 в Windows 8.1 может потребоваться учитывать это изменение поведения, так как оно приводит к событиям ImageOpened или ImageFailed, которые происходят во время выполнения при обработке изменения масштаба, даже в тех случаях, когда источник задан в XAML. Кроме того, если у вас есть код, который обрабатывал DpiChangedLogicalDpiChanged/ и сбрасывал ресурсы, следует проверить, нужен ли этот код, учитывая новый Windows 8.1 поведение автоматической перезагрузки.

Приложения, которые скомпилированы для Windows 8, но выполняются в Windows 8.1, продолжают использовать правила, действующие в Windows 8.

Применяется к