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