Reputation: 6546
The filtering become slow when the list is large. Is there a faster way to process the filter ? Currently this is what I have.
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);
}
}
Upvotes: 1
Views: 2537
Reputation: 1974
Have you tried this way :
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;
}
}
This is the most common way to use collectionView.
Upvotes: 1