2013-10-08 1 views
1

Фильтрация становится медленной, когда список большой. Есть ли более быстрый способ обработки фильтра? В настоящее время это то, что у меня есть.Фильтр 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); 
    } 
} 

ответ

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.