绑定集合的子集

时间:2012-03-08 16:44:42

标签: c# wpf data-binding

我有一个ObservableCollection<Person>个对象。 Person个对象具有NameType个属性,其中Typestudentteacher。有没有办法将ComboBox绑定到ObservableCollection<Person>对象的子集,Type属性只有teacher

3 个答案:

答案 0 :(得分:8)

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。从源集合中添加或删除任何项目时,将自动过滤此集合。

答案 1 :(得分:2)

这会对你有所帮助

WPF Binding to a Combo using only a subset of a Collection's items

以下是像CollectionViewSource,Filters ecc ...

这样的概念

还要看看

Data bind to a portion of a collection

答案 2 :(得分:1)

您可以按照以下方式以编程方式执行此操作:

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