Обновить LongListSelector ItemSource без MVVM

Я разрабатываю приложение для Windows Phone 8, которое получает данные из веб-службы и отображает их.

У меня есть список уведомлений, привязанный к LongListSelector, в котором я хочу отображать больше элементов, когда пользователь прокручивает до конца: бесконечный список.

Я много искал, но не нашел решения в своем случае, все они говорят об архитектуре Model, View, ViewModel. Мне придется повторить большую часть своей работы, если я изменю свои списки на ObservableCollections.

Мой фактический код:

private async void NotificationList_ItemRealized(object sender, ItemRealizationEventArgs e)
{
    if (NotificationList.ItemsSource == null) return;
    int currentItemsCount = NotificationList.ItemsSource.Count;
    if (currentItemsCount >= _offsetKnob && e.Container != null)
    {
        var list = await LoadDataAsync(++page);
        foreach (var notification in list)
        {
            NotificationList.ItemsSource.Add(notification);
        }
    }
}

Элементы добавляются в список, но не отображаются. Есть ли решение для отображения новых элементов, как только они будут добавлены в LongListSelector??


person Oussama    schedule 27.08.2013    source источник
comment
Использование ObservableCollection<T> не в интересах MVVM, оно в интересах WPF. Эти коллекции позволяют автоматически обновлять изменения данных в пользовательском интерфейсе.   -  person Sheridan    schedule 27.08.2013
comment
Есть ли способ уведомить пользовательский интерфейс о добавлении элемента в список с использованием моего фактического контейнера (List‹Notification› не ObservableCollection‹T› )? Если нет, то я буду обязан использовать ObservableCollection..   -  person Oussama    schedule 27.08.2013
comment
Если вы собираетесь использовать WPF, просто привыкните к классу ObservableCollection<T>.   -  person Sheridan    schedule 27.08.2013
comment
При написании приложений для Windows / приложений для Windows Phone вы действительно должны использовать MVVM, иначе вы в конечном итоге будете бороться с ним на каждом этапе!   -  person BenjaminPaul    schedule 27.01.2014


Ответы (1)


Почему вам сложно перейти со списков на ObservableCollections? ObservableCollection — это правильный путь, когда ваш список обновляется в фоновом режиме, и вы хотите уведомлять пользовательский интерфейс об обновлениях. Я написал 2 примера инкрементной загрузки данных из веб-службы (500 пикселей в примере).

Серия Windows Phone — добавочная загрузка несколько источников данных внутри сводки

Серия Windows Phone — добавочная загрузка

Если вы не хотите переходить на ObservableCollection, вам придется обновить привязку пользовательского интерфейса вручную.

person Rahul P Nath    schedule 27.01.2014