2010-10-27 28 views
2

J'ai un DataTemplate que j'utilise pour afficher les détails d'une classe dans un ListBox. Le DataTemplate a un EventTrigger attaché à l'événement Loaded de l'article qui utilise un DoubleAnimation pour fondre chaque élément en vue car ils sont ajoutés au ObservableCollection lié au ListBox. Il a également un DataTrigger qui utilise un DoubleAnimation et un ColorAnimation (RepeatBehavior="Forever") pour animer un effet de lueur dans certaines conditions. Jusqu'ici tout va bien.Mettre à jour WPF ListBoxItem sans ListBox.Items.Refresh()?

L'application nécessite que les propriétés de l'élément doivent être mises à jour toutes les quelques secondes. Le problème survient après la mise à jour d'une propriété d'un élément dans le ListBox, lors de l'appel ListBox.Items.Refresh(). Cela réinitialise les animations, de sorte que chaque élément apparaisse et l'effet de lueur redémarre toutes les quelques secondes. Les valeurs de propriété d'élément ne sont pas mises à jour si je n'appelle pas Refresh. Ma question est la suivante: existe-t-il un moyen de rafraîchir chaque élément individuellement ou de contourner ce problème?

Répondre

5

Assurez-vous que les éléments individuels de votre ObservableCollection<T> implémentent INotifyPropertyChanged. Tant qu'ils le font, les liaisons doivent être mises à jour automatiquement, sans nécessiter d'actualisation explicite.

+0

Ah pardon Reed, je me suis juste répondu avant de voir ta réponse. Je te créditerai quand même. :) – Sheridan