将Form的DataGrid的一部分显示给另一个

时间:2016-08-30 20:54:58

标签: wpf datagrid

我有一个DataGrid,在Form1中有5列Binded to observablecollection我希望在Form2中显示3列但有条件。

Form1中

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

窗体2

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

但行中的条件为(C2!= 0)

2 个答案:

答案 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进行显示