Databind не обновляется после того, как я использую WebClient для получения некоторых данных - PullRequest
0 голосов
/ 13 января 2012

Я довольно новичок в разработке Windows Mobile (в том числе .net framework) и уже довольно долго пытаюсь найти решение этой проблемы:

1 - у меня есть ViewModel, реализующий INotifyPropertyChanged, который содержит мой список людей:

public ObservableCollection<Person> listOfPeople;

2 - Я связываю данные listOfPeople со списком;

3 - Я создал несколько фиктивных данных в своем файле MainPage.xaml.cs, и он обновляет список.

4 - Проблема в том, что я пытаюсь обновить информацию о людях из загружаемой мной rss: Для каждого объекта person я вызываю его метод Person.updateData (). Метод извлекает некоторую информацию из RSS-канала:

internal void updateData()
        {
            WebClient wc = new WebClient();
            wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
            wc.DownloadStringAsync(new Uri(sourceUrl));

        }


        void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            //Parse the data: 
              ...

            //Try to update:

                updateAge(age);
                updateAddress(Address);                
            }

        }

И значения обновляются в классе, но не в пользовательском интерфейсе. После поиска я обнаружил, что обработчик работает в потоке diff, и это, вероятно, проблема. Я пытался

Deployment.Current.Dispatcher.BeginInvoke(delegate { updateSeason(season); });

но не сработало.

Кто-нибудь может мне помочь?

Спасибо

1 Ответ

0 голосов
/ 13 января 2012

Другой поток, вероятно, не является причиной, потому что обработчик события DownloadStringCompleted работает в потоке, в котором был создан WebClient (в данном случае, вероятно, поток пользовательского интерфейса).

Это может быть слишком очевидный вопрос, но вы сгенерировали INotifyPropertyChanged.PropertyChanged событие в вашей ViewModel, когда вы пытаетесь обновить пользовательский интерфейс?

...