Лучший способ отменить привязку wpf listview - PullRequest
2 голосов
/ 29 января 2009

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

С уважением Сандип

Ответы [ 3 ]

1 голос
/ 29 января 2009

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

listView = _list

Который замерзнет в этот момент. Затем в вашем обработчике разморозки установите привязку обратно:

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

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

0 голосов
/ 29 января 2009

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

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

0 голосов
/ 29 января 2009

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

...