2012-03-08 13 views
2

私はObservableCollection<Person>オブジェクトを持っています。 PersonオブジェクトはNameTypeのプロパティを持ちます。Typestudentまたはteacherのいずれかです。 ComboBoxObservableCollection<Person>オブジェクトのサブセットにバインドする方法はありますか?Typeプロパティはteacherですか?コレクションのサブセットをバインド

答えて

1

でも見ていますこれをプログラム的にfollとして行うことができますOWS:

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

ありがとう、これは私が理解できるものからフィルタリングする最もクリーンで最も明白な方法です。 – dotancohen

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

+0

私はパーティーに少し遅れていますが、少々のタイプミスです。 'var教師 'は' var source'であるべきです –

+0

@MickaelV。 - ありがとう。更新された.. !! –

関連する問題