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