2010-12-14 6 views
4

J'ai une application qui montre une liste d'images. La source de l'image est définie sur une URL http et les images sont téléchargées et affichées automatiquement.Comment définir un espace réservé pour un contrôle Image (pendant le téléchargement)?

Cependant, alors que l'application prend du temps à télécharger, le contrôle d'image ne montre rien. L'expérience utilisateur n'est pas bonne de cette façon. Comment afficher une image d'espace réservé de chargement ou une jauge de chargement pour chaque contrôle d'image?

Répondre

5

Lorsqu'une image est en cours de chargement, elle est dessinée de façon transparente. Vous pouvez utiliser ceci à votre avantage pour afficher un élément sous l'image pendant le chargement. Par exemple, vous pourriez avoir une image stockée avec votre XAP qui représente un avatar par défaut par exemple. Ou vous pouvez afficher une animation de chargement XAML. Ensuite, lorsque l'image est chargée, elle obscurcira l'élément qui se trouve derrière.

La suggestion de Mick est une bonne idée si vous avez besoin de minimiser votre arborescence visuelle et si votre scénario permet une solution de code. Cette suggestion n'est pas parfaite, mais elle facilite le traitement du cas où l'image de l'espace réservé n'est pas mise à l'échelle/centrée mais que l'image chargée est mise à l'échelle/étirée.

+0

Pensé de le faire. S'il n'y a pas de meilleure solution, je le ferai. Merci. – samwize

2

Vous pouvez définir la source de l'image sur votre espace réservé, puis lorsque ImageOpened se déclenche, remplacez-la par l'URL distante et laissez-la s'exécuter.

+0

Merci Mick. J'ai essayé de définir la source de l'image à un espace réservé en premier. Ensuite, lorsque je définis la source sur l'URL distante, l'image sera vide pendant une période pendant le téléchargement. Peut-il être meilleur? – samwize

+0

Vous pouvez créer un UserControl en utilisant initialement deux contrôles d'image différents. L'instance d'espace réservé peut être supprimée/masquée/en arrière dans l'ordre z lorsqu'elle n'est plus nécessaire. J'ai envisagé d'afficher cela en premier, puis j'ai pensé à ce qui précède comme potentiellement plus élégant. –

+0

Oui, je préfère aussi quelque chose de plus élégant :) – samwize

0

En plus des 2 autres suggestions (de Josh & Mick) vous pouvez afficher un espace réservé dans le xaml et ensuite, en code, télécharger l'image réelle souhaitée en arrière-plan en utilisant HttpWebRequest. Ensuite, lorsque l'image est entièrement téléchargée, enregistrez-la dans une mémoire isolée, puis mettez à jour la source vers l'image affichée.

Oui, cela est plus complexe que les autres solutions mais simplifierait l'arborescence visuelle et éviterait qu'une image vide soit affichée pendant le téléchargement de l'image.
Cela vous donnerait également la mise en cache hors ligne des images.

0

Il est intéressant de connaître le nombre d'options disponibles pour résoudre ce problème.

Vous pourriez également envisager l'implémentation de la mise en cache d'image de Ben Gracewood ou ce qui semble être un développement sur cette idée dans les commentaires de son blog.

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

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

des renseignements généraux sur la discussion qui a précédé cette ici si cela vous intéresse.

Image control cache duration?

Questions connexes