使用CollectionViewSource.View.Filter属性而不是CollectionViewSource.Filter事件之间有哪些实际差异?是否存在使用其中一个或者是偏好的情况?
干杯,
Berryl
编辑: 我确实看到文档说“如果你的视图对象来自CollectionViewSource对象,你可以通过为Filter事件设置一个事件处理程序来应用过滤逻辑。”虽然没有什么可以阻止你在视图上设置属性,但它没有说明为什么要这样做。
到目前为止我在CollectionViewSource上设置事件的优势在于,您可以在一个事件处理程序中实现所有过滤逻辑,然后使用View.Refresh(或View.DeferRefresh)在用户更改时调用它过滤标准。
答案 0 :(得分:0)
在CollectionViewSource中设置Filter
事件意味着即使没有需要过滤也会调用该事件,这会使该过程效率降低。
使用Filter
事件的官方方法是将其添加到过滤中,并在清除过滤器后将其删除。
viewsource.Filter += viewsource_Filter;
然后:
viewsource.Filter -= viewsource_Filter;
//你怎么知道有多少事件!?
如果您使用该事件,则必须确保每次过滤器值更改时都不添加事件,因为除了潜伏的多余事件(= app更加努力工作)之外,您必须全部删除事件是为了清除过滤器。
因此,使用Filter
属性有一个优势,因为您可以通过将属性设置为null
来更轻松地清除过滤器。
viewsource.view.Filter = null;