C# 集合的绑定子集

C# 集合的绑定子集,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个可观察的集合对象。Person对象具有Name和Type属性,其中Type是student或teacher。有没有办法将组合框绑定到ObservableCollection对象的子集,其中类型属性仅为教师?这将对您有所帮助 这里提到的概念有CollectionViewSource、过滤器ecc 也看看 您可以按以下程序执行此操作: MyComboBox.ItemsSource = a.Where((obj, r) => { return (obj.Type == "student

我有一个
可观察的集合
对象。
Person
对象具有
Name
Type
属性,其中
Type
student
teacher
。有没有办法将组合框绑定到
ObservableCollection
对象的子集,其中
类型
属性仅为
教师

这将对您有所帮助

这里提到的概念有CollectionViewSource、过滤器ecc

也看看


您可以按以下程序执行此操作:

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;
   }
}
公共ICollectionView教师
{
得到
{
//人是你可以观察到的集合。
var teachers=CollectionViewSource.GetDefaultView(个人);
teachers.Filter=p=>(p作为个人)。Type==“Teacher”;
归国教师;
}
}

您可以使用此属性绑定comboBox ItemSource。当从源集合中添加或删除任何项目时,此集合将自动筛选。

谢谢,这两个问题中有一些很好的信息和链接。谢谢,这是我能说的最干净、最明显的过滤方式。我来晚了一点,但有点打字错误:
var教师
应该是
var source
@MickaelV。-谢谢更新。。!!