ListView неправильно обновляется с помощью ObservableCollection

В настоящее время я использую наблюдаемую коллекцию для хранения моих объектов данных для 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(); });

    }

Однако, похоже, это тоже работает некорректно. Мы будем благодарны за любые советы или идеи.

8
задан user793491 30 June 2011 в 23:02
поделиться