2010-05-21 3 views
2

La question courte est: comment puis-je empêcher (retarder) le rafraîchissement d'un élément d'interface utilisateur lié jusqu'à ce que je le souhaite?WPF Retarder l'actualisation des éléments de l'interface utilisateur dans ItemsControl

L'explication la plus longue: J'ai un processus qui ajoute un certain nombre d'éléments à ItemsControl, puis effectue des calculs supplémentaires sur ces éléments en utilisant un thread d'arrière-plan. Ceci (correctement) met à jour les éléments au fur et à mesure. Toutefois, je souhaite empêcher la mise à jour de ItemsControl au cours d'un calcul particulier, car il réorganise les éléments avant de faire des calculs supplémentaires basés sur cet ordre, puis renvoie les éléments dans leur ordre d'origine. Je montre une animation "Please Wait" en haut de ItemsControl, avec l'ItemsControl estompé comme il fonctionne, mais je préfère ne pas masquer ItemsControl entièrement parce qu'il donne à l'utilisateur une indication que la progression est en cours fabriqué.

Répondre

3

Pourriez-vous créer une collection temporaire qui stocke les résultats calculés, puis, une fois terminée, vous pouvez l'affecter à la propriété à laquelle vous êtes lié?

+1

Encore un commentaire à ce sujet ... Si vous utilisez un ObservableCollection <>, il informera l'interface utilisateur qu'il a été mis à jour chaque fois que la collection change. Si vous utilisez List <>, vous pouvez alors attendre que tous vos éléments soient ajoutés, puis utiliser INotifyPropertyChanged, vous pouvez indiquer à l'interface utilisateur qu'elle a été modifiée. – JSprang

+0

Je peux probablement le faire, dans ce cas. Cependant, j'espérais une réponse plus générique ... –

Questions connexes