2011-01-14 17 views
3

それぞれに言語プロパティを持つ複数のDocumentEntryオブジェクトを含む観測可能なコレクションがあります。これをDataGridに表示してドキュメントを更新できるようにしましたが、エントリが多すぎるため、コンボボックスに言語名を追加しました。その言語のドキュメントのみを表示する必要があります。LINQ to Observable collection

文書のコレクションはのObservableCollectionですが、私は

myDataGrid.DataContext = (from d in documents where d.language == selectedLanguage select d); 

を言うときLINQクエリの結果は、監視可能なコレクションではありません。私はこれをまったく適切にフィルタリングしていますか?このケースでは、データグリッド内のObservableCollectionを言語別に最適にフィルタリングするにはどうすればよいですか?

乾杯

ニクこれを試してみてください。この

myDataGrid.DataContext = documents; 
CollectionViewSource cvs = CollectionViewSource.GetDefaultView(documents); 
vse.Filter = delegate(object obj) 
{ 
    Document doc = obj as Document; 
    if(doc == null) 
     return false; 
    return doc.language == selectedLanguage; 
} 

答えて

1

良い、

XAML:

<Listbox x:name="MyLB"/> 

CB:

Dim q = from c as myobject in myobservablecollection where c.CriteriaA= CriteriaB 

MyLb.Itemsource = q.ToList 

基礎ビーイング:のDataContextのみ作成されたオブジェクトに設定することができます。 LINQに関する限り、フィルタリングされたビューを反映するために、LINQ結果クエリをTOLISTとして渡す必要があります。

注:ToListは汎用リストであり、INotifyPropertyChangedは実装されていないため、これは更新されません。

+0

ありがとうございます:-) – niklassaers

+0

あなたは幸せです –