2012-03-08 159 views
2

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

回答

1

你可以通过编程的方式做到这一点OWS:

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

谢谢,这是从我可以告诉的过滤最清洁和最明显的方式。 – dotancohen 2012-03-08 19:24:15

7

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; 
    } 
} 

你可以用这个属性绑定您的组合框的ItemSource。当您的源集合中添加或删除任何项目时,将自动过滤此集合。

+0

非常感谢! – dotancohen 2012-03-08 19:23:40

+0

我对派对有点迟到,但有点小错:'var teachers'应该是'var source' – 2016-05-19 15:54:23

+0

@MickaelV。 - 谢谢..更新.. !! – 2016-05-19 16:41:16