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 的其中一個案例是將基礎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 物件的影像來源時,就會引發其中一個來源載入事件, (ImageOpened 或 ImageFailed) ,因為系統要求新資源的動作,然後將它套用至 Image。 執行時間調整變更可能發生的案例,是在有一個以上的可用時,當使用者將應用程式移至不同的監視器時。

如果您將應用程式程式碼從 Windows 8 遷移至Windows 8.1您可能會想要考慮此行為變更,因為它會導致在處理調整變更時發生ImageOpened或 ImageFailed 事件,即使在 XAML 中設定Source的情況下也一樣。 此外,如果您有處理DpiChangedLogicalDpiChanged/ 並重設資源的程式碼,您應該檢查是否仍需要該程式碼,因為新的Windows 8.1自動重載行為。

針對 Windows 8 編譯但在 Windows 8.1 上執行的應用程式會繼續使用 Windows 8 的行為。

適用於