Лучший способ отменить привязку wpf listview

2

У меня есть список WPF, связанный с набором объектов. Объекты постоянно добавляются в сборку с удаленного сервера, и то же самое относится к listview. Теперь у нас есть требование, чтобы мы могли заморозить список в течение некоторого времени,        То есть объекты должны по-прежнему добавляться в коллекцию, но не должны отображаться в списке, пока мы не разморозим его (у нас есть кнопка для замораживания и размораживания). Каков наилучший способ сделать это, когда listview привязан к коллекции? Как отвязать сборку и переподтвердить ее? и смогу ли я по-прежнему фильтровать и сортировать, когда коллекция не связана с списком? В ожидании ответа ответьте

Отношения Сандип

Теги:
wpf
data-binding
listview

3 ответа

1

Вы можете просто сломать привязку. В своем обработчике кнопки "замораживание" скажите:

listView = _list

Что будет заморозить его в этой точке. Затем в вашем обработчике размораживания установите привязку:

listView.SetBinding(ListView.ItemsSourceProperty, New Binding("_list"))

Надеюсь, это поможет.

0

Вы должны просто прекратить обновление коллекции, когда список заморожен, если вы должны продолжать добавлять коллекцию, даже когда список заморожен (если одна и та же коллекция используется в другом месте, которая не должна быть заморожена), то рассмотрите вопрос о наличии двух коллекций, один всегда обновляется, а другой связан с списком.

0

Каков тип списка, который вы используете в качестве источника данных? Можете ли вы использовать BindingList<T>? Если это так, у него есть настраиваемое свойство RaiseListChangedEvents, позволяющее отключать уведомления. Это, вероятно, будет очень беспорядочным, но ваши последние точки (сортировка/фильтр).

Лично я бы работал с 2 списками - связанным, и тем, что сервер обновляет. Когда вы остановились, просто прекратите перекачку данных между ними. Это должно оставить приостановленное представление бесплатным для сортировки/фильтрации и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню