我们使用CollectionView实现了对于绑定数据的导航,除导航功能外,还可以通过CollectionView对数据进行类似于DataView的排序、筛选等功能。
一、数据的排序:
使用第二十四节的数据源,查询所有的产品信息:
1: 3: xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" 4: xmlns:lib=\"clr-namespace:WPF_24_Library;assembly=WPF_24_Library\" 5: Title=\"CollectionViewSortData\" Height=\"300\" Width=\"500\"> 6: 7: 9: MethodName=\"GetAllProductInfo\" /> 10: 11: 12: 13: 14: 15: 16: 18: ItemsSource=\"{Binding}\"> 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
实现对数据的排序,使用的是CollectionView对象中的SortDescriptions集合属性,其包含多个SortDescription对象,按照其先后顺序对数据实现排序。注意SortDescription对象的构造方法的两个参数,第一个参数是字符串类型的,表示数据类型中的某个属性的属性名,其属性的类型必须实现IComparable接口,即实现相应的排序规则;第二参数是ListSortDeirection枚举,表示排序的顺序是正序还遇倒序。
本例应在按钮的Click事件中定义如下的代码:
1: private void Button_Click(object sender, RoutedEventArgs e)
2: {
3: // 获取数据源适配器
4: ObjectDataProvider provider =
5: (ObjectDataProvider) (this.FindResource(\"myDataSource\"));
6: // 获取数据源
7: List 8: 9: // 获取数据源对应的CollectionView 10: ICollectionView view = CollectionViewSource.GetDefaultView(collections); 11: // 清除原有的排序 12: view.SortDescriptions.Clear(); 13: 14: // 获取要排序的两个列的列名 15: string firstColumn = ((ComboBoxItem) (cmbColumnA.SelectedItem)).Tag.ToString(); 16: string secendColumn = ((ComboBoxItem)(cmbColumnB.SelectedItem)).Tag.ToString(); 17: 18: if (view.CanSort) 19: { 20: // 添加排序规则(注意添加的顺序) 21: view.SortDescriptions.Add( 22: new SortDescription(firstColumn,ListSortDirection.Ascending)); 23: view.SortDescriptions.Add( 24: new SortDescription(secendColumn, ListSortDirection.Ascending)); 25: } 26: } 应用程序执行这后的效果如图: 二、实现对数据的筛选 实现对数据的筛选使用的是CollectionView对象的Filter属性,Filter属性的类型是Predicate
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务