Image.ImageFailed Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, wenn ein Fehler beim Abrufen oder Format von Bildern auftritt.
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"/>
Ereignistyp
Hinweise
Zu den Bedingungen, unter denen dieses Ereignis auftreten kann, gehören:
- Datei nicht gefunden
- Ungültiges Dateiformat (nicht erkannt oder nicht unterstützt)
- Fehler bei der Decodierung unbekannter Dateiformate nach dem Upload
- Qualifiziertes Neuladen von Ressourcen durch das System Möglicherweise können Sie die ErrorMessage in Ereignisdaten verwenden, um die Art des Fehlers zu bestimmen.
ImageFailed und ImageOpened schließen sich gegenseitig aus. Das eine oder andere Ereignis wird immer ausgelöst, wenn für ein Image ein Source-Wert festgelegt oder zurückgesetzt wird.
Ein Szenario für die Behandlung von ImageFailed besteht darin, die UriSource der zugrunde liegenden BitmapImage-Quelle auf eine andere lokale Bilddatei festzulegen. Dies kann als Fallbackwert dienen, der anstelle von leerem Leerraum angezeigt werden soll. Wenn Sie beispielsweise versuchen, ein externes Bild anzuzeigen, bei dem die Quelle möglicherweise nicht mehr vorhanden ist, oder wenn der Benutzer über keine Internetverbindung verfügt, können Sie festlegen, dass die UriSource auf ein lokales Fallback- oder Platzhalterimage verweist, das Teil Ihres App-Pakets ist und immer garantiert verfügbar ist.
Wenn sich das Image-Element nicht in der visuellen Livestruktur befindet, löst das Image-Element keine ImageOpened - oder ImageFailed-Ereignisse aus. Wenn Sie diese Ereignisse empfangen müssen, während sich das Element nicht in der Livestruktur befindet, verwenden Sie BitmapImage. ImageOpened/ImageFailed-Ereignisse .
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-Verhaltensweise
Für Windows 8 können Ressourcen ein Ressourcenqualifizierermuster verwenden, um je nach gerätespezifischer Skalierung unterschiedliche Ressourcen zu laden. Ressourcen werden jedoch nicht automatisch neu geladen, wenn sich der Skalierungsfaktor ändert, während die App ausgeführt wird. In diesem Fall müssen Apps sich um das Erneute von Ressourcen kümmern, indem sie das DpiChanged-Ereignis (oder das veraltete LogicalDpiChanged-Ereignis ) behandeln und die ResourceManager-API verwenden, um die Ressource manuell neu zu laden, die für den neuen Skalierungsfaktor geeignet ist. Ab Windows 8.1 wird jede Ressource, die ursprünglich für Ihre App abgerufen wurde, automatisch neu ausgewertet, wenn sich der Skalierungsfaktor ändert, während die App ausgeführt wird. Wenn diese Ressource die Bildquelle für ein Image-Objekt ist, wird eines der Quellladeereignisse (ImageOpened oder ImageFailed) ausgelöst, weil das System die neue Ressource anfordert und dann auf das Image anwendet. Das Szenario, in dem eine Änderung der Laufzeitskalierung auftreten kann, ist, wenn der Benutzer Ihre App auf einen anderen Monitor verschiebt, wenn mehrere verfügbar sind.
Wenn Sie Ihren App-Code von Windows 8 zu Windows 8.1 migrieren, sollten Sie diese Verhaltensänderung berücksichtigen, da dies zu ImageOpened- oder ImageFailed-Ereignissen führt, die zur Laufzeit auftreten, wenn die Skalierungsänderung behandelt wird, auch wenn die Quelle in XAML festgelegt ist. Wenn Sie über Code verfügen, der DpiChanged/LogicalDpiChanged verarbeitet und die Ressourcen zurückgesetzt hat, sollten Sie außerdem untersuchen, ob dieser Code angesichts des neuen Windows 8.1 automatischen Nachladenverhaltens weiterhin benötigt wird.
Apps, die für Windows 8 kompiliert wurden, aber unter Windows 8.1 ausgeführt werden, weisen weiterhin das Windows 8-Verhalten auf.