Частичное связывание со списком или коллекцией ObservableCollection на основе свойства - PullRequest
1 голос
/ 20 сентября 2011

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

Проще говоря, я бы хотел List (ObservableCollection, в идеале), который я мог бы привязать к ListBox, DataGrid, ComboBox, что у вас есть.Но я не хочу просто привязывать весь список - скорее, я хотел бы привязать к определенному набору в списке, который соответствует критериям.Я бы хотел, чтобы он был Наблюдаемым, чтобы элемент сам управлял и ничего не сбрасывалось.Еще один способ выразить это Фильтрованное связывание, возможно ...

Например, представьте список:

FilteredObservableCollection<Person> people = new FilteredObservableCollection<Person>();
people.Add(new Person() { Name = "John Smith", IsMale = True });
people.Add(new Person() { Name = "Jane Doe", IsMale = False });
people.Add(new Person() { Name = "Fanny Mae", IsMale = False });
people.Add(new Person() { Name = "Freddie Mac", IsMale = True });

Я бы затем связал свой DataGrid:

myDataGrid.ItemsSource = people;

myDataGrid будет перечислять всех людей по умолчанию.

Но тогда, если я установлю:

people.Filter = "IsMale"

FilteredObservableCollection будет только список мужчин (сохраняя при этом полный и нефильтрованный список)

Или, может быть, я слишком обдумываю это - возможно, это возможно при некотором хитром использовании конвертеров и триггеров?Я знаю, что есть некоторые элементы управления - элементы управления Telerik и другие, - которые могут обеспечить некоторый уровень фильтрации по сеткам данных, но я ищу решение, которое больше относится к коллекции, чем к объекту, к которому коллекцияbinds.

В любом случае, прежде чем я начну выводить свою собственную коллекцию ObservableCollection, я подумал, что увижу то, что испытали другие люди ...

Заранее спасибо!

1 Ответ

3 голосов
/ 20 сентября 2011

Есть несколько библиотек с открытым исходным кодом методов расширения в стиле LINQ, которые достигают этого.

Этот поток делает хорошее сравнение из них ... Мы используем BindableLinq к успеху, хотя основной разработчик больше не поддерживает его.

...