zoukankan      html  css  js  c++  java
  • WPF筛选、排序和分组

    可以通过CollectionViewSource或者CollectionView对视图进行排序、筛选和分组。

    一、通过CollectionViewSource

    listingDataView是CollectionViewSource的一个实例。

    1、排序

    listingDataView.SortDescriptions.Add( new SortDescription("Category", ListSortDirection.Ascending));
    istingDataView.SortDescriptions.Add( new SortDescription("StartDate", ListSortDirection.Ascending));

    2、筛选

    需要为Filter事件设置处理程序,在处理程序中提供数据的筛选逻辑

    listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
    
    private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
    {
        AuctionItem product = e.Item as AuctionItem;
        if (product != null)
        {
            // Filter out products with price 25 or above
            if (product.CurrentPrice < 25)
            {
                e.Accepted = true;
            }
            else
            {
                e.Accepted = false;
            }
        }
    }

    3、分组

    PropertyGroupDescription groupDescription = new PropertyGroupDescription();
    groupDescription.PropertyName = "Category";
    listingDataView.GroupDescriptions.Add(groupDescription);

    二、通过CollectionView

    myCollectionView是ListCollectionView的一个实例。通常使用CollectionViewSource获取。

    1、排序

    myCollectionView.SortDescriptions.Clear();
    myCollectionView.SortDescriptions.Add(new SortDescription("OrderItem", ListSortDirection.Ascending));
    myCollectionView.SortDescriptions.Add(new SortDescription("Customer",ListSortDirection.Ascending));

    2、筛选

    定义用来提供筛选逻辑的方法

    public bool Contains(object de)
    {
        Order order = de as Order;
        //Return members whose Orders have not been filled
        return(order.Filled== "No");
    }

    使用 Filter 属性来指定回调方法

    myCollectionView.Filter = new Predicate<object>(Contains);

    这种方式比较方便,通过指定不同的回调即可实现筛选,不必像CollectionViewSource那样添加删除事件(我想是这样的,没有验证)

    3、分组

    同CollectionViewSource的分组

  • 相关阅读:
    ES6知识点脑图
    三大框架知识点比较(Angular, Vue, React)
    Angular(06)- 为什么数据变化,绑定的视图就会自动更新了?
    Angular(05)- 组件知识点脑图
    iTop4412开发板+虚拟机+tftp服务
    发布项目遇到的问题
    Ubuntu + Django(DRF) + channels(websocket)+NGINX + uwsgi 环境部署
    在Ubuntu中使用uwsgi 启动 Django ,但是静态文件映射出错
    Django + mysql 在创建数据库出错
    流媒体服务器搭建 ffmpeg + nginx
  • 原文地址:https://www.cnblogs.com/guofeiji/p/5500199.html
Copyright © 2011-2022 走看看