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

.NET MAUI列表视图过滤

ListView提供了在运行时以编程方式过滤其数据的功能。控件中实现filter接口的筛选器描述符可以实现这一点RadListView。过滤器Descriptors收集。你可以使用我们的DelegateFilterDescriptor实现。

DelegateFilterDescriptor

DelegateFilterDescriptor属性支持过滤器,它定义了用于检查数据项是否通过筛选器的函数。

  1. 首先,在XAML中定义ListView:

                 < / telerik: RadListView >
  2. 添加一个DelegateFilterDescriptorFilerDescriptorsListView实例的集合:

    listView.FilterDescriptors。添加(新的telerik . xamarinforms . datacontrolls . listview . delegatefilterdescriptor {Filter = this。AgeFilter});
  3. 这是AgeFilter方法,其中包含过滤逻辑:

    private bool AgeFilter(对象参数){var age =((项目)参数).Age;返回年龄>= 25 &&年龄<= 35;}
  4. 定义视图模型类:

    公共类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; } }
  5. 设置数据类:

    公开类Person{公开字符串Name {get;设置;}公共int年龄{获取;设置;}}

    数据过滤后的结果如下图所示:

ListView过滤

绑定FilterDescriptors

FilerDescriptors集合的ListView支持绑定,这意味着您可以直接从视图模型

为了控制FilterDescriptor通过MVVM收集:

  1. 创建type属性ObservableCollection < FilterDescriptorBase >在你的视图模型,其中将包含所需的过滤器。

    public ObservableCollection FilterDescriptors {get{返回this.filterDescriptors;}设置{this。UpdateValue (ref。filterDescriptors值);}}
  2. 使用OneWayToSource绑定模式将该属性绑定到FilterDescriptorsListView的属性。为了演示目的,这个ListView使用了相同的方法视图模型如上例所示:

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

    private void UpdateExistingFilterDescriptor() {if(此。FilterDescriptors == null)返回;如果(this.FilterDescriptors。Count == 0) {this.FilterDescriptors. Count == 0)Add(new DelegateFilterDescriptor() {Filter = new Func((item) => ((Person)item).Name.Equals("A"))});}}

如下图所示:

ListView过滤器描述符MVVM

另请参阅

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