2010-09-29 33 views
2

使用CollectionViewSource.View.Filter属性而不是CollectionViewSource.Filter事件之间的一些实际差异是什么?是否有情况需要使用一个或者是一个偏好问题?CollectionViewSource过滤事件vs属性

干杯,
Berryl

编辑: 我也看到,文档说:“如果您的视图对象来自一个CollectionViewSource对象,请在应用设置的事件处理程序的过滤器事件过滤逻辑。”尽管没有什么能阻止你在视图上设置属性,但它没有说明为什么这样做。

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

+0

你可以在这里找到答案:http://bea.stollnitz.com/blog/?p=31我建议你读她约的CollectionView其他职位:) – Bruno 2011-04-12 11:33:45

回答

0

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

使用Filter事件的官方方式是在过滤时添加它,稍后在清除过滤器时将其删除。

viewsource.Filter += viewsource_Filter;

然后:

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

如果您使用该事件,则必须确保每次过滤器值发生更改时都不添加该事件,因为除了存在潜在的冗余事件(=应用程序无法工作)之外,您必须删除所有的事件,以清除过滤器。

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

viewsource.view.Filter = null;