我有一个ObservableCollection<Person>
个对象。 Person
个对象具有Name
和Type
个属性,其中Type
为student
或teacher
。有没有办法将ComboBox
绑定到ObservableCollection<Person>
对象的子集,Type
属性只有teacher
?
答案 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 ...
这样的概念还要看看
答案 2 :(得分:1)
您可以按照以下方式以编程方式执行此操作:
MyComboBox.ItemsSource = a.Where((obj, r) => { return (obj.Type == "student"); }).ToList();