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 は相互に排他的です。 ImageSource 値が設定またはリセットされるたびに、一方のイベントまたはもう一方のイベントが常に発生します。

ImageFailed を処理するシナリオの 1 つは、基になる BitmapImage ソースの UriSource を別のローカル イメージ ファイルに設定することです。 これは、空き領域の代わりに表示するフォールバック値として機能します。 たとえば、ソースが存在しない可能性がある外部イメージを表示しようとしている場合や、ユーザーがインターネットに接続していない場合は、 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 イベント) を処理し、 ResourceManager API を使用して、新しいスケーリング 係数に適したリソースを手動で再読み込みすることで、リソースの再読み込みを処理する必要があります。 Windows 8.1以降、アプリの実行中にスケーリング 係数が変更された場合、アプリ用に最初に取得されたすべてのリソースが自動的に再評価されます。 さらに、そのリソースが Image オブジェクトのイメージ ソースである場合、新しいリソースを要求してから Image に適用するシステムのアクションの結果として、ソース読み込みイベント (ImageOpened または ImageFailed) の 1 つが発生します。 実行時スケールの変更が発生する可能性があるシナリオは、複数のモニターが使用可能なときにユーザーがアプリを別のモニターに移動する場合です。

アプリ コードを Windows 8 から Windows 8.1に移行する場合は、この動作の変更を考慮する必要があります。これは、Xaml でソースが設定されている場合でも、スケールの変更が処理されるときに実行時に発生する ImageOpened イベントまたは ImageFailed イベントが発生するためです。 また、DpiChangedLogicalDpiChanged/ を処理し、リソースをリセットするコードがある場合は、新しいWindows 8.1自動再読み込み動作を使用して、そのコードがまだ必要かどうかを調べる必要があります。

Windows 8 用にコンパイルしたアプリは、Windows 8.1 上で実行しても Windows 8 のときと同じ動作になります。

適用対象