2010-09-04 9 views
0

Je pense que c'est trivial, mais je ne trouve pas la réponse :( J'ai une page WP7 qui héberge quelques contrôles que je veux remplir avec la date de lecture d'une demande Web. la demande web se fait avec:..Windows Phone 7 - contrôle contenu et demande asynchrone

 WebClient wr = new WebClient(); 
     wr.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Event_DownloadStringCompleted); 
     wr.DownloadStringAsync(new Uri(theURL)); 

et on l'appelle en cas PAGE_LOADED en Event_DownloadStringCompleted je tente d'affecter les nouvelles valeurs aux TextBlocks, qui ignorent complètement cette commande

que suis-je Ai-je besoin de trouver un événement différent pour lancer le web est? Ou est-il possible de "rafraichir" la page une fois la requête Web terminée?

Merci

Répondre

1

Votre Event_DownloadStringCompleted n'est pas appelé sur le thread d'interface utilisateur ne peut donc pas mettre à jour l'interface utilisateur. Utilisez le Dispatcher pour être rappelé sur le bon thread. par exemple.

page.Dispatcher.BeginInvoke (delegate() {textBlock.Text = "done!";});

+0

Je comprends l'explication, mais j'ai quelques problèmes pour l'implémenter - où pensez-vous que je devrais appeler BeginInvoke? Juste après avoir lu les résultats, je dois afficher? Ou lorsque? Merci! – ila

+0

bien, j'ai implémenté le rappel de délégué, et je peux voir dans le débogage que le code est exécuté, mais aucun effet sur l'interface utilisateur. quand je navigue "en arrière" en utilisant le pad au bas de l'émulateur je peux voir pendant un bref instant les valeurs correctes ... Il me manque quelque chose :) – ila

0

Vous pouvez lancer la requête Web lorsque la méthode OnNavigatedTo() de la page est appelée, plutôt que lorsque l'événement Loaded de la page est déclenché, même si je ne pense pas que cela résoudra votre problème.

Etes-vous sûr que votre gestionnaire de l'événement DownloadStringCompleted est appelé? Si oui, la propriété Error du DownloadStringCompletedEventArgs est-elle définie sur une valeur non nulle?

+0

J'ai essayé de déplacer le code dans l'événement OnNavigatedTo, mais j'ai les mêmes résultats (comme prévu). L'événement s'appelle, pas d'erreurs. – ila

0

Il existe des problèmes connus d'affichage/rafraîchissement liés à certains pilotes d'affichage introduits dans la version bêta publique. Cela a été connu dans certains cas pour être associé à des adaptateurs ATI. Certaines personnes signalent un succès suite à une mise à jour du pilote.

Cela peut affecter votre résultat d'actualisation.

Aussi, vous pouvez vérifier votre pilote est directx10 minimum et conforme WDDM1.1 selon les exigences du système WPDT. Si ce n'est pas le cas, la mise à niveau du pilote (à nouveau), la modification de l'adaptateur ou la mise à niveau vers Win7 si vous utilisez Vista, ce qui a résolu plusieurs problèmes obscurs.

De plus, si vous avez l'option, essayez de monter sur un autre PC avec une configuration différente.