У меня есть список WPF, связанный с набором объектов. Объекты постоянно добавляются в сборку с удаленного сервера, и то же самое относится к listview. Теперь у нас есть требование, чтобы мы могли заморозить список в течение некоторого времени, То есть объекты должны по-прежнему добавляться в коллекцию, но не должны отображаться в списке, пока мы не разморозим его (у нас есть кнопка для замораживания и размораживания). Каков наилучший способ сделать это, когда listview привязан к коллекции? Как отвязать сборку и переподтвердить ее? и смогу ли я по-прежнему фильтровать и сортировать, когда коллекция не связана с списком? В ожидании ответа ответьте
Отношения Сандип
Вы можете просто сломать привязку. В своем обработчике кнопки "замораживание" скажите:
listView = _list
Что будет заморозить его в этой точке. Затем в вашем обработчике размораживания установите привязку:
listView.SetBinding(ListView.ItemsSourceProperty, New Binding("_list"))
Надеюсь, это поможет.
Вы должны просто прекратить обновление коллекции, когда список заморожен, если вы должны продолжать добавлять коллекцию, даже когда список заморожен (если одна и та же коллекция используется в другом месте, которая не должна быть заморожена), то рассмотрите вопрос о наличии двух коллекций, один всегда обновляется, а другой связан с списком.
Каков тип списка, который вы используете в качестве источника данных? Можете ли вы использовать BindingList<T>
? Если это так, у него есть настраиваемое свойство RaiseListChangedEvents
, позволяющее отключать уведомления. Это, вероятно, будет очень беспорядочным, но ваши последние точки (сортировка/фильтр).
Лично я бы работал с 2 списками - связанным, и тем, что сервер обновляет. Когда вы остановились, просто прекратите перекачку данных между ними. Это должно оставить приостановленное представление бесплатным для сортировки/фильтрации и т.д.