2012-03-08 101 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