У меня тут странная проблема. Мы разрабатываем универсальное приложение для Windows 10, и теперь я хочу обновить свой список, когда добавлю новое значение. Но, к сожалению, это не сработает, и я действительно не знаю, почему. Когда я добавляю новое значение, оно не будет обновлять мой список.
Данные поступают из фонового потока (REST-запрос к серверу), и поэтому я знаю, что должен использовать что-то, что запускает «добавочную функциональность» в UI-потоке.
Прежде всего я объявил IProgress и свою коллекцию:
private List<dtoGemeinde> _listeGemeinden = new List<dtoGemeinde>();
public List<dtoGemeinde> GemeindenCollection
{
get { return this._listeGemeinden; }
}
IProgress<dtoGemeinde> prog;
prog = new Progress<dtoGemeinde>(UpdateListViewUI);
Это метод «UpdateListViewUI»:
public void UpdateListViewUI(dtoGemeinde dto)
{
_listeGemeinden.Add(dto);
this.listViewGemeinden.ItemsSource = GemeindenCollection;
}
А это метод обратного вызова, который вызывается, когда завершается фоновый поток, загружающий данные с сервера:
public async void onCallBackGemeinden(List<dtoGemeinde> listeGemeinden)
{
if (listeGemeinden != null && listeGemeinden.Count > 0)
{
this.progress.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
foreach (dtoGemeinde dto in listeGemeinden)
{
await listViewGemeinden.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => prog.Report(dto));
}
}
else
{
await new MessageDialog("Data cant be load", "Error").ShowAsync();
}
}