Hay dos problemas que estos dos paquetes intentan resolver: Falta de un evento CollectionChanged y conjuntos de resultados dinámicos. Hay un problema adicional de soluciones enlazables, activadores de eventos automáticos adicionales.
El primer problema ambos paquetes tienen como objetivo resolver es la siguiente:
objetos devueltos por una consulta LINQ hacen no proporciona eventos CollectionChanged.
continua LINQ hace automáticamente a todas las consultas, sin cambios:
from item in theSource select item ;
Bindable LINQ tiene esto cuando agrega .asBindable a su consulta de origen del objeto:
from item in theSource.AsBindable() select item ;
El segundo problema ambos paquetes tienen como objetivo resolver es:
conjuntos de resultados devueltos de una consulta LINQ son estáticas.
Normalmente cuando se hace una consulta de LINQ el resultado conjunto es sin cambios hasta que lo haga una nueva consulta. Con estos dos paquetes, su conjunto de resultados se actualiza cada vez que se actualiza la fuente . (Malo para el rendimiento, buena para actualizaciones en tiempo real)
Ejemplo
var theSource = new ContinuousCollection<Customer>();
var theResultSet = from item in theSource where item.Age > 25 select item;
//theResultSet.Count would equal 0.
Debido a que su uso de Bindable o LINQ Continuo, que podrían modificar theSource y theResultSet incluiría automáticamente el nuevo elemento.
theSource.Add(new Customer("Bob", "Barker" , 35, Gender.Male)); //Age == 35
//theResultSet.Count would now equal 1.
el problema adicional Bindable LINQ ofrece: (Citando directamente de su propia página)
contactsListBox.ItemsSource = from c in customers
where c.Name.StartsWith(textBox1.Text)
select c;
Bindable LINQ detectará que la consulta se basa en la propiedad Text el objeto TextBox, textBox1. Desde el TextBox es un control WPF, Bindable LINQ sabe suscribirse al evento TextChanged en el control.
el resultado final es que a medida que el usuario se tipos, los elementos de la consulta son re-evaluados y los cambios aparecen en pantalla. No se necesita ningún código adicional para manejar eventos.
Nice! No tenía idea de que existiera tal cosa. Gracias por llamar mi atención alex. :-) – mezoid
Después de considerar estos tres proyectos, decidí continuar desarrollando [mi propia solución] (http://happynomad121.blogspot.com/2013/01/data-binding-among-complex-expressions.html) ya que me permite escribir consultas puras de LINQ-a-Objetos, sin modificaciones, como siempre lo hacía antes. – HappyNomad