Обновить WPF ListBoxItem без ListBox.Items.Refresh()?

У меня есть DataTemplate, который я использую для отображения сведений из класса в ListBox. DataTemplate имеет EventTrigger, прикрепленное к событию Loaded элемента, которое использует DoubleAnimation для постепенного появления каждого элемента в поле зрения, когда они добавляются к ObservableCollection, привязанному к ListBox. Он также имеет DataTrigger, который использует DoubleAnimation и ColorAnimation (RepeatBehavior="Forever") для анимации эффекта свечения при определенных условиях. Все идет нормально.

Приложение требует, чтобы свойства элемента обновлялись каждые несколько секунд. Проблема возникает после обновления свойства элемента в ListBox при вызове ListBox.Items.Refresh(). Это сбрасывает анимацию, так что каждый элемент исчезает в поле зрения, а эффект свечения перезапускается каждые несколько секунд. Значения свойств элемента не обновляются, если я не вызываю Refresh. Мой вопрос: есть ли способ обновить каждый элемент по отдельности или как-то обойти эту проблему?


person Sheridan    schedule 27.10.2010    source источник


Ответы (1)


Убедитесь, что отдельные элементы в вашем ObservableCollection<T> реализуют INotifyPropertyChanged. Пока они это делают, привязки должны обновляться автоматически, не требуя явного обновления.

person Reed Copsey    schedule 27.10.2010
comment
Ах, извини, Рид, я только что ответил себе, прежде чем увидел твой ответ. Я все равно отдам тебе должное. :) - person Sheridan; 28.10.2010