.NET MAUI列表视图排序
ListView可用于对可视化数据进行排序。这可以通过添加不同的SortDescriptors
对其SortDescriptors
收集。我们的代码附带了两种类型的描述符。
PropertySortDescriptor
您可以根据定义业务项的类的属性值对数据进行排序。这个描述符公开了以下属性:
PropertyName
-定义用于检索排序键的属性的字符串名称。排序方式
-指定升序或降序排序。
DelegateSortDescriptor
这个描述符使您能够根据自定义键(例如,组合了两个或多个属性的复杂表达式)进行排序,而不是受限于单个属性的值。这个描述符公开了以下属性:
排序方式
-设置排序顺序为升序或降序。比较器
定义的比较
方法由内部使用IComparer.
例子
下面是一个示例,将指导您如何使用SortDescriptor
在ListView中。
首先,在XAML中定义ListView并添加PropertySortDescriptor
对其SortDescriptors
集合:
< telerik: RadListView。SortDescriptors>
控件使用下面的代码段视图模型
类:
公共类ViewModel{公共ViewModel() {this。Items = GetData();} public ObservableCollection Items {get;设置;} private static ObservableCollection GetData() {var items = new ObservableCollection();物品。添加(新的人{名字=“汤姆”,年龄= 41});物品。添加(new Person {Name = "Anna", Age = 32});物品。添加(新人{姓名= "Peter",年龄= 28}); items.Add(new Person { Name = "Teodor", Age = 39 }); items.Add(new Person { Name = "Lorenzo", Age = 25 }); items.Add(new Person { Name = "Andrea", Age = 33 }); items.Add(new Person { Name = "Martin", Age = 36 }); items.Add(new Person { Name = "Alexander", Age = 29 }); items.Add(new Person { Name = "Maria", Age = 22 }); items.Add(new Person { Name = "Elena", Age = 27 }); items.Add(new Person { Name = "Stefano", Age = 44 }); items.Add(new Person { Name = "Jake", Age = 31 }); items.Add(new Person { Name = "Leon", Age = 28 }); return items; } }
在哪里人
类的定义如下:
公开类Person{公开字符串Name {get;设置;}公共int年龄{获取;设置;}}
下图显示了数据排序后的结果。
绑定SortDescriptors
的SortDescriptors
集合的ListView支持绑定,这意味着您可以直接从视图模型
.
通过MVVM控制描述符集合:
创建type属性
ObservableCollection < SortDescriptorBase >
在你的视图模型
它将包含所需的排序描述符:public ObservableCollection
SortDescriptors {get{返回this.sortDescriptors;} set {if (this。sortDescriptors != value){这个。sortDescriptors = value;OnPropertyChanged ();}}} public ObservableCollection
SortDescriptors {get{返回this.sortDescriptors;}设置{this。UpdateValue (ref。sortDescriptors值);}} 使用
OneWayToSource
绑定模式将该属性绑定到SortDescriptors
ListView的属性。出于演示目的,这个ListView使用相同的方法视图模型
和前面的例子一样。的排序描述符中添加排序描述符
SortDescriptors
在视图模型
,例如:private void UpdateExistingSortDescriptor() {if(此。SortDescriptors == null)返回;如果(this.SortDescriptors。计数== 0){this.SortDescriptors。添加(新的PropertySortDescriptor() {PropertyName = "Day", SortOrder = SortOrder。提升});}}
结果如下图所示: