Wpf 将窗体的DataGrid的一部分显示给另一个窗体

Wpf 将窗体的DataGrid的一部分显示给另一个窗体,wpf,datagrid,Wpf,Datagrid,我有一个DataGrid,在Form1中有5列绑定到observablecollection,我想在Form2中显示其中的3列,但有条件 表格1 +==========+==========+==========+==========+==========+ | C1 | C2 | C3 | C4 | C5 | +==========+==========+==========+==========+==========+ 表格2 +

我有一个DataGrid,在Form1中有5列绑定到observablecollection,我想在Form2中显示其中的3列,但有条件

表格1

+==========+==========+==========+==========+==========+
|    C1    |    C2    |    C3    |    C4    |    C5    |
+==========+==========+==========+==========+==========+
表格2

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

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

假设您有一个
CollectionViewSource
Form1CVS
,它基于您的
ObservableCollection
myCollection
在第一个表单中使用,现在创建一个新的
CollectionViewSource
Form2CVS
也基于
myCollection
并将其用于您的第二个表单,现在使用其
视图
过滤您需要过滤的任何条件

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

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

ICollectionView filteredView = Form2CVS.View;

filteredView.Filter = CustomFilter

一种解决方案(有很多)是从
ObservableCollection
中筛选出符合您条件的项目,如:

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

然后将其传递给Form2以供显示

I有点新,无法在此处找到所有答案
var filtered = DbCollection.Where(r => r.C2 !=0)