В настоящее время я использую наблюдаемую коллекцию для хранения моих объектов данных для ListView. Добавление новых объектов в коллекцию работает нормально, а listView обновляется правильно. Однако, когда я пытаюсь изменить одно из свойств объекта в коллекции, listView не будет обновляться должным образом. Например, у меня есть наблюдаемая коллекция DataCollection. Пробую
_DataCollections.ElementAt(count).Status = "Active";
Выполняю это изменение перед длительной операцией из-за нажатия кнопки. ListView не будет отражать изменение. Поэтому я добавляю myListView.Items.Refresh ()
;. Это работает, однако listView не обновляется до завершения метода button_click, что к тому времени уже не годится.
Например:
button1_Click(...)
{
_DataCollections.ElementAt(count).Status = "Active";
myListView.Items.Refresh();
ExecuteLongOperation();
_DataCollections.ElementAt(count).Status = "Finished";
myListView.Items.Refresh();
}
Статус никогда не перейдет в «Активный», он сразу перейдет в «Завершено» после завершения метода. Я также пробовал использовать диспетчер вроде этого:
button1_Click(...)
{
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Active"; myListView.Items.Refresh(); });
ExecuteLongOperation();
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Finished"; myListView.Items.Refresh(); });
}
Однако, похоже, это тоже работает некорректно. Мы будем благодарны за любые советы или идеи.