Это две проблемы, которые оба пакета пытаются решить: отсутствие события CollectionChanged и динамические наборы результатов. Существует еще одна проблема, которую можно решить с помощью привязки, дополнительные автоматические триггеры событий.
Первая проблема , которую решают оба пакета:
Объекты, возвращаемые запросом LINQ, делают
не предоставлять события CollectionChanged.
Continuous LINQ автоматически делает это для всех запросов без изменений:
from item in theSource select item ;
Bindable LINQ делает это, когда вы добавляете .asBindable к вашему запросу Исходный объект:
from item in theSource.AsBindable() select item ;
Вторая проблема , которую решают оба пакета:
Наборы результатов, возвращенные из запроса LINQ.
статичны.
Обычно, когда вы выполняете запрос LINQ, ваш набор результатов не изменяется до тех пор, пока вы не выполните новый запрос. С этими двумя пакетами ваш набор результатов обновляется всякий раз, когда обновляется source . (плохо для производительности, хорошо для обновлений в реальном времени)
* Пример 1 040 *
var theSource = new ContinuousCollection<Customer>();
var theResultSet = from item in theSource where item.Age > 25 select item;
//theResultSet.Count would equal 0.
Поскольку вы используете Bindable или Continuous LINQ, вы можете изменить theSource , а theResultSet автоматически добавит новый элемент.
theSource.Add(new Customer("Bob", "Barker" , 35, Gender.Male)); //Age == 35
//theResultSet.Count would now equal 1.
Дополнительная проблема Bindable LINQ предлагает: (Цитирование непосредственно со своей страницы)
contactsListBox.ItemsSource = from c in customers
where c.Name.StartsWith(textBox1.Text)
select c;
Bindable LINQ обнаружит, что
запрос опирается на свойство Text
объект TextBox, textBox1. поскольку
TextBox - это элемент управления WPF, привязываемый
LINQ знает, чтобы подписаться на
Событие TextChanged в элементе управления.
Конечным результатом является то, что как пользователь
типы, элементы в запросе
переоценка и изменения появляются на
экран. Никакого дополнительного кода не требуется
обрабатывать события.