2016-08-30 35 views
1

我有一個DataGrid的5列在Form1中綁定到observablecollection我想在Form2中顯示3列但條件。將Form的DataGrid的一部分顯示到另一個

Form1中

+==========+==========+==========+==========+==========+ 
| C1 | C2 | C3 | C4 | C5 | 
+==========+==========+==========+==========+==========+ 

窗體2

+==========+==========+==========+ 
| C1 | C3 | C4 | 
+==========+==========+==========+ 

但隨着行條件,其中(C2!= 0)

回答

1

一個解決方案(有很多)是過濾掉從ObservableCollection滿足您的條件,像這樣的項目:

var filtered = DbCollection.Where(r => r.C2 !=0) 

然後通過這個到你的Form2進行顯示

1

假設你有一個CollectionViewSourceForm1CVS是根據您的ObservableCollectionmyCollection在你的第一次形式使用,現在創建一個新的CollectionViewSourceForm2CVS也是基於myCollection,並用它爲你的第二個表,現在用它View過濾,你需要通過

CollectionViewSource Form2CVS= (CollectionViewSource)FindResource("Form2CVS"); 
Form2CVS.Source = myCollection; 

//or 
//CollectionViewSource Form2CVS = new CollectionViewSource { Source=myCollection}; 

ICollectionView filteredView = Form2CVS.View; 

filteredView.Filter = CustomFilter 

 

過濾任何條件
private bool CustomFilter(object item) 
{ 
    YourClass yourObject = item as YourClass ; 
    return yourObject.C2 != 0; 
} 
+0

我有點新的在這裏找不到所有的答案 – klaus

相關問題