新的Telerik UI。net MAUI?开始30天的免费试用

.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控制描述符集合:

  1. 创建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值);}}
  2. 使用OneWayToSource绑定模式将该属性绑定到SortDescriptorsListView的属性。出于演示目的,这个ListView使用相同的方法视图模型和前面的例子一样。

               < / telerikDataControls: RadListView >
  3. 的排序描述符中添加排序描述符SortDescriptors视图模型,例如:

    private void UpdateExistingSortDescriptor() {if(此。SortDescriptors == null)返回;如果(this.SortDescriptors。计数== 0){this.SortDescriptors。添加(新的PropertySortDescriptor() {PropertyName = "Day", SortOrder = SortOrder。提升});}}

结果如下图所示:

排序描述符MVVM

另请参阅

在本文中
找不到你需要的帮助?
Baidu
map