Image.ImageFailed イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
イメージの取得または形式に関連するエラーがある場合に発生します。
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 は相互に排他的です。 Image に Source 値が設定またはリセットされるたびに、一方のイベントまたはもう一方のイベントが常に発生します。
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 のときと同じ動作になります。