Partilhar via


Image.ImageFailed Evento

Definição

Ocorre quando há um erro associado à recuperação ou ao formato da imagem.

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"/>

Tipo de evento

Comentários

As condições nas quais esse evento pode ocorrer incluem:

  • Arquivo não encontrado
  • Formato de arquivo inválido (não reconhecido ou sem suporte)
  • Erro de decodificação de formato de arquivo desconhecido após o upload
  • Recarregamento de recursos qualificados pelo sistema Talvez você possa usar o ErrorMessage nos dados do evento para determinar a natureza da falha.

ImageFailed e ImageOpened são mutuamente exclusivos. Um evento ou outro sempre será acionado sempre que uma Imagem tiver um valor de origem definido ou redefinido.

Um cenário para lidar com ImageFailed é definir o UriSource da fonte BitmapImage subjacente para um arquivo de imagem local diferente. Isso pode servir como um valor de fallback para exibir em vez de espaço vazio. Por exemplo, se você estiver tentando exibir uma imagem externa em que é possível que a origem não esteja mais lá, ou para quando o usuário não tiver nenhuma conexão com a Internet, você poderá definir o UriSource para fazer referência a um fallback local ou imagem de espaço reservado que faz parte do pacote do aplicativo e sempre tem a garantia de estar disponível.

Quando o elemento Image não estiver na árvore visual dinâmica, o elemento Image não disparará eventos ImageOpened ou ImageFailed. Se você precisar receber esses eventos enquanto o elemento não estiver na árvore dinâmica, use o BitmapImage. ImageOpened/Eventos 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;
}

Comportamento do Windows 8

Para o Windows 8, os recursos podem usar um padrão de qualificador de recursos para carregar recursos diferentes, dependendo do dimensionamento específico do dispositivo. No entanto, os recursos não serão recarregados automaticamente se o fator de dimensionamento for alterado enquanto o aplicativo estiver em execução. Nesse caso, os aplicativos teriam que cuidar do recarregamento de recursos, manipulando o evento DpiChanged (ou o evento LogicalDpiChanged preterido) e usando a API ResourceManager para recarregar manualmente o recurso apropriado para o novo fator de dimensionamento. Começando com Windows 8.1, qualquer recurso que foi originalmente recuperado para seu aplicativo será automaticamente reavaliado se o fator de dimensionamento mudar enquanto o aplicativo estiver em execução. Além disso, quando esse recurso é a origem da imagem de um objeto Image , um dos eventos de carga de origem (ImageOpened ou ImageFailed) é acionado como resultado da ação do sistema de solicitar o novo recurso e, em seguida, aplicá-lo à Imagem. O cenário em que uma alteração de escala em tempo de execução pode acontecer é se o usuário move seu aplicativo para um monitor diferente quando mais de um está disponível.

Se você migrar o código do aplicativo do Windows 8 para Windows 8.1 talvez queira considerar essa alteração de comportamento, pois isso resulta em eventos ImageOpened ou ImageFailed que ocorrem em tempo de execução quando a alteração de escala é tratada, mesmo nos casos em que a Origem é definida em XAML. Além disso, se você tiver um código que manipulasse DpiChanged/LogicalDpiChanged e redefinisse os recursos, deverá examinar se esse código ainda é necessário, considerando o novo Windows 8.1 comportamento de recarregamento automático.

Os aplicativos que foram compilados para Windows 8, mas estão sendo executados no Windows 8.1, continuam a adotar o comportamento do Windows 8.

Aplica-se a