我正在研究WPF Datagrid
我们正在自定义网格以支持搜索,过滤,隐藏/取消隐藏等功能,
对于过滤和搜索,我们使用CollectionViewSource
获取ICollectionView
,在该列表中我们正在执行上述各种操作。
对于像搜索这样的特定功能,用户重新排序了列,然后执行了搜索操作,我使用以下函数获取ICollectionView
数据:
ICollectionView objDatacollectionview =
CollectionViewSource.GetDefaultView(DataSource.DataGridSrcCollection);
DataSource.DataGridSrcCollection
是我的ObservableCollection<DataRowView>
。
从objDataCollectionView
对象中,我得到每行的itemArray
并搜索文本并开始突出显示找到文本的单元格,但我面临的问题是我的{{1加载网格时,对象始终以原始顺序返回CollectionViewSource
DataRow
,因为它没有考虑列重新排序,搜索没有指向第一列,它实际上指向加载第一个匹配文本时第一列的列。
我遇到的问题是,有没有办法按照正确的顺序获取项数组值如何重新排序列,如果不能,我可以使用ItemArray
的任何其他方法,以便我可以搜索完成后突出显示正确的项目。
以下是我的示例代码
下面是示例代码
Collectionview
在上面的代码中,因为我正在遍历每一行itemArray数据我有原始顺序,而不是重新排序的列,我可以使用索引到列映射,但在此操作后我必须支持以前的搜索项和下一个搜索项目,所以我认为如果我每次都使用列显示索引进行搜索,会影响性能。
答案 0 :(得分:0)
每个DataGridColumn
都有一个DisplayIndex
属性,它会告诉您列的当前位置。这将允许您确定订购。