Связать подмножество коллекции

У меня есть ObservableCollection<Person> объект. Person объекты имеют Name а также Type свойства, где Type либо student или же teacher, Есть ли способ связать ComboBox к подмножеству ObservableCollection<Person> объект, где Type собственность только teacher?

3 ответа

Решение

Вы можете сделать это программно следующим образом:

MyComboBox.ItemsSource = a.Where((obj, r) => { return (obj.Type == "student"); }).ToList();

ICollectionView Ваш ответ здесь -

public ICollectionView Teachers
{
   get
   {
      // Persons is your ObservableCollection<Person>.
      var teachers = CollectionViewSource.GetDefaultView(Persons);
      teachers.Filter = p => (p as Person).Type == "Teacher";
      return teachers;
   }
}

Вы можете привязать ваш ComboBox ItemSource с помощью этого свойства. Когда какой-либо элемент добавляется или удаляется из вашей исходной коллекции, эта коллекция будет автоматически отфильтрована.

Это поможет вам

Связывание WPF с Комбо, используя только подмножество элементов Коллекции

Здесь упоминаются такие понятия, как CollectionViewSource, Filters ecc...

Посмотрите также на

Связывание данных с частью коллекции

Другие вопросы по тегам