2010-12-14 3 views
4

Ich habe eine App, die eine Liste von Bildern zeigen. Die Bildquelle ist auf eine http-URL eingestellt, und die Bilder werden heruntergeladen und automatisch angezeigt.Wie wird ein Platzhalter für ein Image-Steuerelement festgelegt (während es heruntergeladen wird)?

Während die App Zeit zum Herunterladen braucht, zeigt die Bildsteuerung nichts. Die Benutzererfahrung ist auf diese Weise nicht gut.

Wie kann ich ein Ladeplatzhalterbild oder ein Lademessgerät für jedes Bildsteuerelement anzeigen?

Antwort

5

Während ein Bild geladen wird, wird es transparent gezeichnet. Sie können dies zu Ihrem Vorteil verwenden, um während des Ladens ein Element unter dem Bild anzuzeigen. Zum Beispiel könnten Sie ein Stock Image haben, das mit Ihrem XAP gebündelt ist und beispielsweise einen Standard-Avatar darstellt. Oder Sie könnten eine XAML-Ladeanimation anzeigen. Wenn das Bild fertig geladen ist, wird das dahinterliegende Element verdeckt.

Micks Vorschlag ist ein guter, wenn Sie Ihren visuellen Baum minimieren müssen und wenn Ihr Szenario eine Code-Lösung ermöglicht. Dieser Vorschlag ist nicht perfekt, aber es macht es einfacher, den Fall zu behandeln, in dem Ihr Platzhalterbild unskaliert/zentriert ist, aber das geladene Bild skaliert/gestreckt ist.

+0

Dachte daran, das zu tun. Wenn es keine bessere Lösung gibt, werde ich das tun. Vielen Dank. – samwize

2

Sie könnten die Bildquelle auf Ihren Platzhalter setzen, wenn ImageOpened ausgelöst wird, ändern Sie es in die Remote-URL und lassen Sie es laufen.

+0

Danke Mick. Ich habe versucht, die Bildquelle zuerst auf einen Platzhalter zu setzen. Wenn ich dann die Quelle auf die Remote-URL einstelle, ist das Bild für einen bestimmten Zeitraum leer, während es heruntergeladen wird. Kann es besser sein? – samwize

+0

Sie könnten ein Benutzersteuerelement zunächst mit zwei verschiedenen Bildsteuerelementen erstellen. Die Platzhalterinstanz kann in Z-Reihenfolge gelöscht/ausgeblendet werden, wenn sie nicht mehr benötigt wird. Ich überlegte, ob ich das zuerst posten sollte, und dachte dann, dass das Obige möglicherweise eleganter wäre. –

+0

Ja, ich bevorzuge auch etwas eleganter :) – samwize

0

Zusätzlich zu den 2 anderen Vorschlägen (von Josh & Mick) könnten Sie einen Platzhalter in der XAML anzeigen und dann, im Code, das gewünschte Bild im Hintergrund unter HttpWebRequest herunterladen. Wenn das Bild vollständig heruntergeladen wurde, speichern Sie es im isolierten Speicher und aktualisieren Sie dann die Quelle auf das angezeigte Bild.

Ja, das ist komplexer als die anderen Lösungen, würde aber den visuellen Baum vereinfachen und vermeiden, dass ein leeres Bild angezeigt wird, während das Bild heruntergeladen wird.
Es würde Ihnen auch Offline-Caching von Bildern zu geben.

0

Interessant, wie viele Möglichkeiten es gibt, dieses Problem anzugehen.

Sie könnten auch gerne Ben Gracewoods Image-Caching-Implementierung oder etwas, das in seinen Blogkommentaren eine Weiterentwicklung dieser Idee zu sein scheint, in Betracht ziehen.

One-time Cached Images in Windows Phone 7 « Ben.geek.nz

Peter Nowaks Mobile Blog - “Intelligent” Image Caching for WP 7

Einige Hintergrundinformationen über die Diskussion zu diesem hier führen, wenn es von Interesse ist.

Image control cache duration?

Verwandte Themen