У меня есть ObservableCollection, которая получает данные из foreach. Пользовательский интерфейс прекрасно обновляется, когда в коллекцию вносятся изменения, но есть задержка, так как размер коллекции начинает увеличиваться в размере. У меня в коллекции около 500+ предметов, которые удаляются, переупорядочиваются и добавляются. Но я заметил, что существует определенная задержка между моментом внесения изменений и их отражением в пользовательском интерфейсе. Пример ниже является простым. Очевидно, что индикатор выполнения в этом случае не будет работать долго (доли секунды), но я хочу подчеркнуть, что пользовательский интерфейс не будет отражать изменения, которые я внес в течение многих, многих заметных секунд после индикатор выполнения останавливается ниже. Какое событие я могу зафиксировать или реализовать в своем объекте, который позволит мне добавить код, который обновляет индикатор выполнения, пока ObservableCollection передается в пользовательский интерфейс? Или кто-то хочет отправить мне фотографию собаки "DealWithIt":)
a_progressbar.IsIndeterminate = true;
foreach (Group<SomeItem> sortedItem in sortedItems)
{
OList.Add(sortedItem);
}
a_progressbar.IsIndeterminate = false;
Обновление Вот код, который я использовал, чтобы заставить его работать.
_dataBinder = new BackgroundWorker();
_dataBinder.DoWork += new DoWorkEventHandler(DataBinderWork);
_dataBinder.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DataBinderComplete);
...
private void DataBinderComplete(object sender, RunWorkerCompletedEventArgs e)
{
Dispatcher.BeginInvoke(() =>
{
a_progressbar.IsIndeterminate = false;
});
}
private void DataBinderWork(object sender, DoWorkEventArgs e)
{
Dispatcher.BeginInvoke(() => LotsOfWork());
}