CollectionViewSource过滤事件与属性

时间:2010-09-29 19:13:42

标签: wpf silverlight filter collectionviewsource

使用CollectionViewSource.View.Filter属性而不是CollectionViewSource.Filter事件之间有哪些实际差异?是否存在使用其中一个或者是偏好的情况?

干杯,
Berryl

编辑: 我确实看到文档说“如果你的视图对象来自CollectionViewSource对象,你可以通过为Filter事件设置一个事件处理程序来应用过滤逻辑。”虽然没有什么可以阻止你在视图上设置属性,但它没有说明为什么要这样做。

到目前为止我在CollectionViewSource上设置事件的优势在于,您可以在一个事件处理程序中实现所有过滤逻辑,然后使用View.Refresh(或View.DeferRefresh)在用户更改时调用它过滤标准。

1 个答案:

答案 0 :(得分:0)

在CollectionViewSource中设置Filter事件意味着即使没有需要过滤也会调用该事件,这会使该过程效率降低。

使用Filter事件的官方方法是将其添加到过滤中,并在清除过滤器后将其删除。

viewsource.Filter += viewsource_Filter;

然后:

viewsource.Filter -= viewsource_Filter; //你怎么知道有多少事件!?

如果您使用该事件,则必须确保每次过滤器值更改时都不添加事件,因为除了潜伏的多余事件(= app更加努力工作)之外,您必须全部删除事件是为了清除过滤器。

因此,使用Filter属性有一个优势,因为您可以通过将属性设置为null来更轻松地清除过滤器。

viewsource.view.Filter = null;