Silverlight 3 - фильтрация наблюдаемой коллекции - PullRequest
2 голосов
/ 17 декабря 2009

Есть ли способ отфильтровать / отсортировать наблюдаемую коллекцию и при этом сохранить уведомления?

Я осмотрелся и обнаружил CollectionViewSource, который фильтрует и сортирует коллекцию по мере необходимости, но когда изменяется свойство items, в котором используется фильтр, в исходной коллекции, оно не обновляет фильтр.

По сути, мне требуется представление исходной коллекции, которое при изменении свойства элемента в представлении обновляет источник, а при изменении источника обновляет представление. Есть ли какой-нибудь класс, обеспечивающий эту функциональность в silverlight 3?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2009

Я бы предложил использовать библиотеку Bindable.Linq , она давно не обновлялась и есть ошибка с оператором Union. Но для фильтров в стиле linq это прекрасно работает.

Вот краткий пример, предполагая, что это в коде позади пользовательского элемента управления silverlight со списком с именем people:

using Bindable.Linq;
...

ObservableCollection<Person> data = new ObserableCollection<Person>{.... fill in};
people.ItemsSource = data.AsBindable(Dispatcher).Where(p => p.FirstName.Equals("steve"));
data.add(new Person("steve"));

если вы сделаете это, Стив должен появиться в списке. Я нашел эту библиотеку очень полезной, и если вы загружаете примеры проектов из codeplex, она показывает более сложные примеры.

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

Есть еще несколько похожих проектов

0 голосов
/ 17 декабря 2009

Не работает ли ObservableCollection с привязкой TwoWay? Можете ли вы разработать свой пример с некоторым кодом, чтобы показать проблему более подробно?

...