【发布时间】:2014-07-11 05:28:30
【问题描述】:
可观察集合上的 WPF 过滤和排序
我有什么?
我有一个带有数据网格的用户控件和一个用于搜索数据网格的文本框。 在我的视图模型中,我有一个名为 EmployeeCollection 的 ObservableCollection,它绑定到数据网格。让我们考虑以下是Employee Collection的内容
员工姓名电子邮件 ID
Emp1 xyz1@abc.com
Emp xyz@abc.com
Emp 2 xyz2@abc.com
ABC abc@abc.com
DEF def@abc.com
此集合绑定到数据网格,并且所有内容都正确显示。在视图模型中,我将以下过滤器添加到集合默认视图中,以便使用文本框中提供的输入搜索集合。显示完全匹配以及以给定搜索文本开头的其他条目。
CollectionViewSource.GetDefaultView(EmployeeCollection).Filter =
x => (((EmployeeViewModel)x).Name.Equals(SearchText, StringComparison.CurrentCultureIgnoreCase) || ((EmployeeViewModel)x).Name.ToLower().StartsWith(SearchText.ToLower()));
我的期望是什么?
现在,我在搜索文本框中输入“Emp”并单击搜索结果。 我期望的结果是先显示完全匹配,然后显示部分匹配(以数据开头),如下所示。
Emp xyz@abc.com
Emp1 xyz1@abc.com
Emp 2 xyz2@abc.com
但是我没有按照预期的顺序得到它。我按照数据存储在 EmployeeCollection 中的顺序获得结果。
Emp1 xyz1@abc.com
Emp xyz@abc.com
Emp 2 xyz2@abc.com
现在如何实现先完全匹配再部分匹配的排序?
【问题讨论】:
标签: c# wpf datagrid observablecollection collectionviewsource