CollectionViewSource过滤器很慢

时间:2013-10-08 11:13:47

标签: c# wpf mvvm collectionviewsource

列表很大时,过滤变慢。有没有更快的方法来处理过滤器?目前这就是我所拥有的。

CollectionViewSource orderListCVS;

private void showCompletedRB(object sender, RoutedEventArgs e)
{
    CollectionView coll = orderListCVS.View as CollectionView;
    coll.Filter = null;
    orderListCVS.Filter += new FilterEventHandler(showCompletedFilter);
}

private void showCompletedFilter(object sender, FilterEventArgs e)
{
    Order order = e.Item as Order;
    if (order != null)
    {
        e.Accepted = (order.Status == Data.Status.Done);
    }
}

1 个答案:

答案 0 :(得分:0)

你试过这种方式:

public partial class MainWindow : Window
{
    private ICollectionView orderListCVS;

    private List<Order> orders;

    public MainWindow()
    {
        InitializeComponent();
        orders = new List<Order>();
        orderListCVS = CollectionViewSource.GetDefaultView(orders);
    }
    private bool showCompletedFilter(object sender)
    {
        Order order = sender as Order;
        if (order != null)
        {
            return order.Status == Data.Status.Done;
        }

        return false;
    }

    private void showCompletedRB(object sender, RoutedEventArgs e)
    {
        orderListCVS.Filter = showCompletedFilter;
    }
}

这是使用collectionView的最常用方法。

相关问题