我有一个DataGrid,在Form1中有5列Binded to observablecollection我希望在Form2中显示3列但有条件。
Form1中
+==========+==========+==========+==========+==========+
| C1 | C2 | C3 | C4 | C5 |
+==========+==========+==========+==========+==========+
窗体2
+==========+==========+==========+
| C1 | C3 | C4 |
+==========+==========+==========+
但行中的条件为(C2!= 0)
答案 0 :(得分:1)
假设您的CollectionViewSource
Form1CVS
基于您的第一个表单中使用的ObservableCollection
myCollection
,现在创建一个新的CollectionViewSource
{ {1}}也基于Form2CVS
并将其用于您的第二个表单,现在使用其myCollection
过滤您需要过滤的任何条件
View
CollectionViewSource Form2CVS= (CollectionViewSource)FindResource("Form2CVS");
Form2CVS.Source = myCollection;
//or
//CollectionViewSource Form2CVS = new CollectionViewSource { Source=myCollection};
ICollectionView filteredView = Form2CVS.View;
filteredView.Filter = CustomFilter
答案 1 :(得分:1)
一个解决方案(有很多)是过滤掉符合您条件的ObservableCollection
项目,例如:
var filtered = DbCollection.Where(r => r.C2 !=0)
然后将其传递给Form2进行显示